【求助】 TIM2定时器作编码器用不了

2019-08-14 16:02发布

看过了好多原子哥的例程,查了好久还是查不出原因,我接上电机编码器到PA15(TIM2 CH1)和PB3(TIM2 CH2),转电机有反应,TIM2->CNT的值只在0和ARR这两个值变化。复用这些问题都考虑过了。

下图是我在转电机时,TIM2定时器的变化,最左栏代表TIM2->CNT,(arr设置的是0X270F),第二栏代表TIM2->CR1,第三栏代表TIM2->SR。


下面是我的初始化函数
void Timer2_Init()//PA15 PB3 两相编码器输入
{ RCC->APB1ENR|=1<<0;  //TIM2时钟使能,左轮 
  RCC->APB2ENR|=1<<3;  //GPIOB端口时钟
RCC->APB2ENR|=1<<2;  //GPIOA端口时钟

RCC->APB2ENR|=1<<0;      
AFIO->MAPR&=0XF8FFFFFF; 
AFIO->MAPR|=0X04000000; //关闭PA15 JTAG功能
AFIO->MAPR&=0XFFFFFCFF;
AFIO->MAPR|=0X00000100;//PA15 和PB3 复用为TIM2

GPIOA->CRH&=0x0FFFFFFF;
GPIOA->CRH|=0X8000000;
GPIOB->CRL&=0xFFFF0FFF;
GPIOB->CRL|=0X00008000;//GPIO初始化

TIM2->CCER|=1<<1; //反相
TIM2->CCMR1&=0X0000;
TIM2->CCMR1|=1<<8;//CH1对应TI1
TIM2->CCMR1|=1<<0;//CH2对应TI2
TIM2->SMCR&=0xFFF8;
TIM2->SMCR|=0x0003;//CH1与CH2同时计数
TIM2->CR1&=0x0000;
TIM2->CR1|=0x01;     //使能定时器2
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。