TIM8的编码器接口模式

2019-08-16 22:35发布

最近做项目用到STM32F103ZET6的高级定时器TIM8的编码器接口模式来读取编码器的数据。程序如下:
//TIME8 编码器接口模式 //编码器模式初始化 void encoder_Init2() { RCC->APB2ENR|=1<<13;//TIM8时钟使能 
RCC->APB2ENR|=1<<4;    //使能PORTC时钟 GPIOC->CRL&=0XF0FFFFFF;//PC6 GPIOC->CRL|=0X04000000;//浮空输入 GPIOC->CRL&=0X0FFFFFFF;//PC7 GPIOC->CRL|=0X40000000;//浮空输入 

TIM8->DIER|=1<<0;   //允许更新中断 TIM8->DIER|=1<<6;   //允许触发中断 MY_NVIC_Init(1,3,TIM8_UP_IRQChannel,2); /* Timer configuration in Encoder mode */  TIM8->SC = 0x00;//预分频器 TIM8->ARR = 43008;//设定计数器自动重装值  TIM8->CR1 &=~(3<<8);// 选择时钟分频:不分频 TIM8->CR1 &=~(3<<5);// 选择计数模式:边沿对齐模式 TIM8->CCMR1 |= 1<<0; //CC1S='01' IC1FP1映射到TI1 TIM8->CCMR1 |= 1<<8; //CC2S='01' IC2FP2映射到TI2 TIM8->CCER &= ~(1<<1); //CC1P='0' IC1FP1不反相,IC1FP1=TI1 TIM8->CCER &= ~(1<<5); //CC2P='0' IC2FP2不反相,IC2FP2=TI2 TIM8->CCMR1 |= 3<<4; // IC1F='1000' 输入捕获1滤波器 TIM8->SMCR |= 3<<0; //SMS='011' 所有的输入均在上升沿和下降沿有效 TIM8->CNT = 0; //计数器初始值 TIM8->CR1 |= 1<<0;    //CEN=1,使能定时器 }
TIM8->CNT能读出编码器的数据,可是当计数器计数到43008的时候不能进入到中断里面。相同的程序,我用TIM4定时器就不会有这样的问题。我看到TIM8的有几个中断函数,我都试过了,好像都不能进去中断。求各位大神指教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
雪雪
1楼-- · 2019-08-16 22:47
回复【楼主位】648342243:
---------------------------------
你是做什么项目?用到编码器?
648342243
2楼-- · 2019-08-17 02:54
回复【2楼】雪雪:
---------------------------------
用得到电机的或者记录位置的就能用到编码器啊!
雪雪
3楼-- · 2019-08-17 08:11
回复【3楼】648342243:
---------------------------------
恩,是的
mengxiao1980
4楼-- · 2019-08-17 13:23
 精彩回答 2  元偷偷看……
落月枫情
5楼-- · 2019-08-17 15:45
同求,楼主解决了没
无限思念
6楼-- · 2019-08-17 17:12
你好,请问楼主的问题解决没有,我也遇到相同的问题,TIM1也不行;

一周热门 更多>