发布网友 发布时间:2022-11-11 20:39
共1个回答
热心网友 时间:2024-12-15 02:31
原贴地址 使用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非常稳定,也没有出现丢步和乱跳的情况。