dcexpert 发表于 2020-6-20 13:32

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

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

<p>&nbsp;</p>

<pre>
<code class="language-python">UART.irq(trigger, priority=1, handler=None, wake=machine.IDLE)</code></pre>

<p>&nbsp;</p>

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

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

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

<p>以上方法在pyboard上测试正常,如果将全部功能封装成一个class,使用会更加方便。<br />
&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

dcexpert 发表于 2020-6-20 13:34

<p><strong>参考程序</strong></p>

<p>&nbsp;</p>

<p>以下使用串口1进行测试</p>

<p>&nbsp;</p>

<p>**** Hidden Message *****</p>

eagler8 发表于 2020-6-20 14:33

<p><img height="50" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/onion/Onion--2.gif" width="50" />&nbsp;学习了</p>

lcl811003 发表于 2020-6-22 14:58

<p>好好学习,天天向上</p>

wp1832 发表于 2020-6-23 14:17

我还是回复了看答案的

smartpilot 发表于 2020-9-8 07:23

<p>初学者看看</p>

小川河马 发表于 2020-10-5 13:20

<p>学习学习</p>

源地登陆器2号 发表于 2020-10-20 09:13

<p>学习一下更加强大</p>

力力江 发表于 2020-11-12 09:49

<p>学习学习</p>

语言菜鸡 发表于 2020-11-16 10:40

<p>学习一下,有帮助</p>

760678854 发表于 2021-3-8 14:10

<p>学习了</p>

abcwww 发表于 2021-4-3 13:53

好,学习一下

songshulin 发表于 2021-4-5 23:54

<p>学习了:)</p>

N95 发表于 2021-5-27 17:32

haoyahaoya

jakkk 发表于 2023-3-16 14:55

<p>bdbdbdbdbd</p>

louis82315 发表于 2023-3-21 15:01

<p>学习一下</p>

a1121881254 发表于 2023-3-29 20:52

<p>学习了</p>

高忠康 发表于 2023-4-11 15:19

<p>支持国产</p>

sunsdasd 发表于 2023-6-12 15:05

<p>学习了</p>

zdszds 发表于 2023-12-1 15:42

<p>得要学习学习, 正用到uart呢</p>
页: [1] 2
查看完整版本: MicroPython串口接收中断的另一种使用方法