MicroPython串口接收中断的另一种使用方法

MicroPython相关代码、库、工具
回复
头像
shaoziyang
帖子: 1267
注册时间: 2019年 10月 21日 13:48

MicroPython串口接收中断的另一种使用方法

#1

帖子 shaoziyang » 2020年 6月 20日 09:19

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

代码: 全选

UART.irq(trigger, priority=1, handler=None, wake=machine.IDLE)
目前,除了等待官方发布支持串口中断功能的新固件之外,我们还可以使用下面方法实现串口中断:
  1. 将串口的RXD引脚设置为输入
  2. 定义RXD引脚的电平变化中断,在回调函数中激活定时器
  3. 设置一个定时器,可以使用machine.Timer(软件定时器)
  4. 设置定时器回调函数,在回调函数中处理串口接收功能
  5. 初始化串口
更进一步,如果可以增加一个定时器,用于串口接收保护,在超过一定时间没有收到新的数据后关闭定时器和串口,以节约功耗;或者认为一组数据接收完成,可以MCU进行处理。

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

头像
shaoziyang
帖子: 1267
注册时间: 2019年 10月 21日 13:48

Re: MicroPython串口接收中断的另一种使用方法

#2

帖子 shaoziyang » 2020年 6月 20日 09:26

参考测试程序:
隐藏内容
你必须登入/注册才可观看隐藏内容
 
 
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章