[原创] MicroPython串口接收中断的另一种使用方法

dcexpert   2020-6-20 13:32 楼主

MicroPython目前只在Wipy中正式提供了串口接收中断功能,其它硬件移植版本中,虽然也可以使用,但是问题比较多,有时会不太稳定,出现一些奇怪问题造成无法正常运行。

 

UART.irq(trigger, priority=1, handler=None, wake=machine.IDLE)

 

目前,除了等待官方发布支持串口中断功能的新固件之外,我们还可以使用下面方法实现串口中断:

  • 将串口的RXD引脚设置为输入
  • 定义RXD引脚的电平变化中断,在回调函数中激活定时器
  • 设置一个定时器,可以使用machine.Timer(软件定时器)
  • 设置定时器回调函数,在回调函数中处理串口接收功能
  • 初始化串口

更进一步,如果可以增加一个定时器,用于串口接收保护,在超过一定时间没有收到新的数据后关闭定时器和串口,以节约功耗;或者认为一组数据接收完成,通知MCU进行处理。

以上方法在pyboard上测试正常,如果将全部功能封装成一个class,使用会更加方便。
 

回复评论 (28)

参考程序

 

以下使用串口1进行测试

 

游客,如果您要查看本帖隐藏内容请回复

点赞  2020-6-20 13:34

 学习了

点赞  2020-6-20 14:33

好好学习,天天向上

点赞  2020-6-22 14:58
我还是回复了看答案的
点赞  2020-6-23 14:17

初学者看看

点赞  2020-9-8 07:23

学习学习

点赞  2020-10-5 13:20

学习一下更加强大

点赞  2020-10-20 09:13

学习学习

点赞  2020-11-12 09:49

学习一下,有帮助

点赞  2020-11-16 10:40

学习了

点赞  2021-3-8 14:10
好,学习一下
点赞  2021-4-3 13:53

学习了:)

点赞  2021-4-5 23:54
haoyahaoya
点赞  2021-5-27 17:32

bdbdbdbdbd

点赞  2023-3-16 14:55

学习一下

点赞  2023-3-21 15:01

学习了

点赞  2023-3-29 20:52

支持国产

点赞  2023-4-11 15:19

学习了

点赞  2023-6-12 15:05

得要学习学习, 正用到uart呢

点赞  2023-12-1 15:42
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复