STM32 FreeRTOS下读取HX711
HX711读取数据时时钟周期只有几十微秒,直接在线程中调用例程中的没法实现,因此考虑将数据口设置为输入中断模式,时钟口用定时器PWM发送脉冲,在定时器中断中取每个bit的数据。具体方法如下:
- 设置外部中断下降沿触发
- 当单片机外部中断发生时,先关闭外部中断
- 等待数据口变高电平
- 打开定时器PWM,产生25个脉冲
- 在定时器中断中读取数据口状态,并按位赋值到变量,
- 当发送到最后一个脉冲时,关闭PWM. 打开外部中断
- 发送消息给OS
- OS处理消息
这样一个读取周期完成了,要注意的是,实际HX711数据是24bit的,所以最终处理数据前要将数据右移一位。