
//旋转编码器初始化 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 } |
U575+OV5640
STM32H7B0 CAN发送异常
救急,摄像头监控方案
STM32和MCP2515通信
智能算法芯片有推荐的吗?
CAN发送数据HAL_CAN_Transmit能够发送数据HAL_CAN_AddTxMessage()函数发送数据堵在邮箱里面发不出去了
带浮点运算功能的小尺寸MCU
F407 PWM功能,GPIO引脚空闲时电平与配置不一致
I3G2450D在零位时的毛刺
请教各位大牛,这是ST的哪个芯片,怎么找不到呢?
{}
您好!我主程序中断允许开的,并且我将TIM1->IER =0XFF;定时器TIM1所有相关中断事件多打开了,还是无法进入相关中断。不用编码器模式,定时器中断正常开启。
能写上什么原因吗,为以后需要的兄弟提供经验。