Remapping Tim2 (Stm32F100Rb)

23-05-2013, 13:50 От: admin Посмотрели: 819
Здравствуйте.



Хочу сделать remapping TIM2, чтобы перебросить TIM2_CH3 с PA2 на PB10.



Вобщем я настроил TIM2 на генерацию PWM на TIM2_CH3 и успешно снимал результаты его работы с ножки PA2.



Потом чтобы перебросить TIM2_CH3 с PA2 на PB10 (сделать remapping) я:



Разрешаю тактирование - 36 RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;

взвожу бит REMAP_0 в единицу - 100 AFIO->MAPR |= AFIO_MAPR_TIM2_REMAP_0;





Но шим попрежнему остается на PA2








#include "stm32f10x.h"

#define CLK_MUL 2 // PLL
int left();
int i;
int q=0;
int let;
int m=0;
int qw=0;

int up_to_let;
int AdcInit();

int adc1;
int adc2;
int uk;
int root=0;
int q1;
int adc;


int main()
{
/*
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; //?????? ???????????? ?? TIM2
TIM2->PSC = 8000-1; //????????? ???????? ??? ???????????? ???????????
TIM2->CR1 = TIM_CR1_OPM; //????? ?????? ????????
*/


RCC->CR|=RCC_CR_HSEON; // HSE.
while (!(RCC->CR & RCC_CR_HSERDY)) {}; // HSE.
RCC->CFGR &=~RCC_CFGR_SW; // SW0, SW1.
RCC->CFGR |= RCC_CFGR_SW_HSE; // HSE SW0=1.

RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;


RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; // A
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN; // B
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; //
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // 2
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // 3
RCC->APB1ENR |= RCC_APB1ENR_TIM4EN; // 4
//
GPIOC->CRL &= ~GPIO_CRL_MODE5;
GPIOC->CRL |= GPIO_CRL_MODE5_1;
GPIOC->CRL &= ~GPIO_CRL_CNF5;
// GPIOC->CRL |= GPIO_CRL_CNF5_0;

GPIOC->CRL &= ~GPIO_CRL_MODE4;
GPIOC->CRL |= GPIO_CRL_MODE4_1;
GPIOC->CRL &= ~GPIO_CRL_CNF4;
// GPIOC->CRL |= GPIO_CRL_CNF4_0;

GPIOC->CRL &= ~GPIO_CRL_MODE3;
GPIOC->CRL |= GPIO_CRL_MODE3_1;
GPIOC->CRL &= ~GPIO_CRL_CNF3;
// GPIOC->CRL |= GPIO_CRL_CNF3_0;

GPIOC->CRL &= ~GPIO_CRL_MODE2;
GPIOC->CRL |= GPIO_CRL_MODE2_1;
GPIOC->CRL &= ~GPIO_CRL_CNF2;
// GPIOC->CRL |= GPIO_CRL_CNF2_0;

GPIOA->CRL &= ~GPIO_CRL_MODE2;
GPIOA->CRL |= GPIO_CRL_MODE2_1;
GPIOA->CRL &= ~GPIO_CRL_CNF2;
GPIOA->CRL |= GPIO_CRL_CNF2_1;

GPIOB->CRL &= ~GPIO_CRL_MODE0;
GPIOB->CRL |= GPIO_CRL_MODE0_1;
GPIOB->CRL &= ~GPIO_CRL_CNF0;
GPIOB->CRL |= GPIO_CRL_CNF0_1;


GPIOB->CRL &= ~GPIO_CRL_MODE1;
GPIOB->CRL |= GPIO_CRL_MODE1_1;
GPIOB->CRL &= ~GPIO_CRL_CNF1;
GPIOB->CRL |= GPIO_CRL_CNF1_1;

GPIOB->CRL &= ~GPIO_CRL_MODE6;
GPIOB->CRL &= ~GPIO_CRL_CNF6;
GPIOB->CRL |= GPIO_CRL_CNF6_1;

// GPIOC->CRL &= ~GPIO_CRL_MODE6;
// GPIOC->CRL |= GPIO_CRL_MODE6_1;

GPIOB->CRH &= ~GPIO_CRH_MODE10;
GPIOB->CRH |= GPIO_CRH_MODE10_1;
GPIOB->CRH &= ~GPIO_CRH_CNF10;
GPIOB->CRH |= GPIO_CRH_CNF10_1;


//
TIM3->CCER |= (TIM_CCER_CC3E|TIM_CCER_CC4E); //
TIM3->CCMR2 &= ~(TIM_CCMR2_OC3M | TIM_CCMR2_OC4M); // 0
TIM3->CCMR2|=(TIM_CCMR2_OC3M_0 | TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC4M_0 | TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2); //

AFIO->MAPR |= AFIO_MAPR_TIM2_REMAP_0;
TIM2->CCER |= TIM_CCER_CC3E; //
TIM2->CCMR2 &= ~TIM_CCMR2_OC3M; // 0
TIM2->CCMR2|=(TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2); //
TIM2->PSC = (8 - 1)*3;
TIM2->CCR3= 15/3;


TIM4->CCMR1 &= ~TIM_CCMR1_CC1S;
TIM4->CCMR1 |=TIM_CCMR1_CC1S_1;
TIM4->CCER &= ~TIM_CCER_CC1P;
TIM4->CCER &= ~TIM_CCER_CC1NP;
TIM4->SMCR |=0x5;
TIM4->SMCR |= 0x50;

TIM4->DIER = TIM_DIER_TIE;
NVIC_EnableIRQ (TIM4_IRQn);
__enable_irq();


// !
TIM4->CR1 |= TIM_CR1_CEN;
TIM3->CR1 |= TIM_CR1_CEN;
TIM2->CR1 |= TIM_CR1_CEN;
TIM3->CCR3= 1000;// 20383
TIM3->CCR4= 1000; // ()

GPIOC->ODR = 12;




//LED
for (;;)
{



if ((up_to_let>500) &(up_to_let<0x3000)) left();


}

}



void TIM4_IRQHandler()
{

if(TIM4->SR & TIM_SR_TIF)
{

if (TIM4->CNT>1000) up_to_let = TIM4->CNT;
TIM4->EGR |= TIM_EGR_UG;
TIM4->SR &= ~TIM_SR_TIF; //


}
}

int left()
{




TIM3->CCR3= 500;// 20383
TIM3->CCR4= 500; // ()

GPIOC->ODR = 24;
for (q1=0; q1<125000*10; q1++);

TIM3->CCR3= 1000;// 20383
TIM3->CCR4= 1000; // ()

GPIOC->ODR = 12;
return(0);

}



P.S. извиняюсь за иероглифы в комментариях к программе
Раздел: Песочница или Вопрос-Ответ

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Remapping Tim2 (Stm32F100Rb) все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Апрель 2024    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930