使用STM32CubeIDE编写EC11 定时器中断方式

使用STM32CubeIDE编写EC11 定时器中断方式,第1张

原贴地址 使用STM32CubeIDE编写EC11

从上图可以看出旋转EC11时,A相上升沿时,B相高电平为顺时针转动,B相低电平则为逆时针转动。所以我们利用这一特性,使用STM32的定时器捕获功能对A相进行电平捕获,然后与B相电平进行比较从而判断旋转方向。

首先要开启定时器TIM3,我们使用这个 HAL_TIM_IC_Start_IT(htim, Channel); 启动定时器。

使用定时器回调函数

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)

在里面编写上面的程序,因为我们将B相接在PA7引脚,所以我们使用switch case语句进行判断引脚电平,如果单片机检测到A相为高电平就会进入这个中断判断B相电平,低电平为反转,高电平极为正转(程序中的cnt为计数作用)。

经测试通过串口打印数据,EC11非常稳定,也没有出现丢步和乱跳的情况。

如果ProteusSTM32仿真无法进入定时器中断,可能是因为定时器中断的配置问题造成的。请检查定时器中断的中断优先级是否已正确设置,并且中断函数是否已正确添加到中断向量表中,最后再检查中断是否已正确使能,这样就可以保证定时器中断的正常运行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7770137.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存