//旋转编码器初始化 void Encoder_Init(void) { //GPIO_DeInit(GPIOC);//恢复GPIOD口的寄存器默认值 //GPIO_Init(GPIOC, GPIO_PIN_6 , GPIO_MODE_IN_FL_NO_IT);//上拉输入无中断功能 //GPIO_Init(GPIOC, GPIO_PIN_7 , GPIO_MODE_IN_FL_NO_IT);//上拉输入无中断功能 //TIM1_DeInit();//恢复寄存器的默认值 //TIM1->CR1 &=0xFE; //CEN='0'失能计数器,关闭计数 CLK->PCKENR1 |=0x80; //开启TIM1时钟 //TIM1->SMCR &=0xfc; TIM1->SMCR |=0x02; //SMS='011'编码器模式3,所有的输入均在上升沿和下降沿有效 TIM1->CCMR1 |=0x1; //CC1S='01'通道位输入CC1通道映射在TI1FP1上 TIM1->CCMR2 |=0x1; //CC2S='01'通道位输入CC2通道映射在TI2FP2上 //TIM1->CCER1 &=0**; //CC1P='0',CC2P='0' //对ARR寄存器进行付初始值为最大值,因为在编码器模式下,计数器计数值的范围是0-ARR寄存器,如果不付初始值,哪ARR就为0,当旋转编码器时,计数值会从0变化到0,就看不到编码器的旋转过程了 TIM1->ARRH =0xEA; //自动重装载高位 TIM1->ARRL =0x60; //自动重装载地位TIM1中断溢出值:0X1F40=8000 TIM1->IER |=0x1; //UIE='1'允许更新中断,开中断 TIM1->CNTRH = 0xea;//encodeNumber / 256; TIM1->CNTRL =0x56; // encodeNumber % 256; //TIM1_CNT起始计数值:4000 //TIM1_ITConfig(TIM1_IT_UPDATE,ENABLE);//中断配置为更新中断 //ITC_SetSoftwarePriority(ITC_IRQ_TIM1_OVF, ITC_PRIORITYLEVEL_0);//设置中断优先级 //ITC->ISPR5 = 0xDF; //18AD中断优先级设置为1.10为0,01为1,00位2,11为3 //ITC->ISPR6 = 0xFF; //23T1中断优先级设置为3,默认,优先级最高 TIM1->CR1 =0x01; //CEN='1'使能计数器,启动计数 //TIM1_Cmd(ENABLE);//启动定时器1 } |
I3G2450D在零位时的毛刺
请教各位大牛,这是ST的哪个芯片,怎么找不到呢?
墨水屏电子纸标签/电子纸价签领域如何选择无线通信方案?
STM32H743 ADC转换不全问题
广州招募嵌入式软件工程师。
如何用STM32芯片设计出能输出5路可分别控制脉冲数目的方波?
STM32F407 ADC采样,实验电源供电,测量干电池,12个bit能稳定10个bit么?
请**474的hrtimer burst 模式如何设置,有没有参考程序?
代码移植、debug调试、spi库函数
Android 串口发送图片接收图片有时显示完整有的不完整
{}
您好!我主程序中断允许开的,并且我将TIM1->IER =0XFF;定时器TIM1所有相关中断事件多打开了,还是无法进入相关中断。不用编码器模式,定时器中断正常开启。
能写上什么原因吗,为以后需要的兄弟提供经验。