参考文章https://blog.youkuaiyun.com/qq_41285788/article/details/102729020
并参考按照官方文档指导,编译成功后下载运行测试发现,虽然编码能计数,但不能产生溢出中断,没法进行累积计数,在经过研究后发现,驱动代码有一处问题:
rt_err_t pulse_encoder_init(struct rt_pulse_encoder_device *pulse_encoder)
{
TIM_Encoder_InitTypeDef sConfig;
TIM_MasterConfigTypeDef sMasterConfig;
struct stm32_pulse_encoder_device *stm32_device;
stm32_device = (struct stm32_pulse_encoder_device*)pulse_encoder;
stm32_device->tim_handler.Init.Prescaler = 0;
stm32_device->tim_handler.Init.CounterMode = TIM_COUNTERMODE_UP;
stm32_device->tim_handler.Init.Period = AUTO_RELOAD_VALUE;
stm32_device->tim_handler.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
stm32_device->tim_handler.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
sConfig.EncoderMode = TIM_ENCODERMODE_TI12;
sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
sConfig.IC1Selection

本文解决了一个STM32脉冲编码器驱动无法产生溢出中断的问题,通过修改驱动代码使得正反转均可计数,并实现了计数累计功能。
最低0.47元/天 解锁文章
4507





