求大佬指点,用RTX51 Tiny时,串口2发送没问题,但串口2接收时会丢数据
<p>芯片用的是Ai8H2K32U,用以下例程<strong>裸机测试时,串口2接收没异常</strong>,不会丢数据</p><p><img src="data/attachment/forum/202505/30/111304o7ja7cqzw1azxm77.png" alt="image.png" title="image.png" /></p>
<p>程序里做了一点修改,用预处理命令来决定开启或关闭RTX51 Tiny</p>
<p><img src="data/attachment/forum/202505/30/111453ncj66s1giiqs1jni.png" alt="image.png" title="image.png" /></p>
<p>开启RTX51 Tiny时需要把这两个文件添加进去,不开启时需要把这两个文件删掉</p>
<p><img src="data/attachment/forum/202505/30/113247bqw9vfuqjj2jqwa8.png" alt="image.png" title="image.png" /></p>
<p>重点来了,程序主频是24MHz,以下是裸机时的接收现象,可以发现接收时不会丢数据的</p>
<p><img src="data/attachment/forum/202505/30/113319rj9v9s88eomooqxe.png" alt="image.png" title="image.png" /><br />
<img src="data/attachment/forum/202505/30/111808k5os5sv5onmpp87q.png" alt="image.png" title="image.png" /></p>
<p>以下是使用RTX51 Tiny时的接收现象,可以发现接收时会丢数据</p>
<p><img src="data/attachment/forum/202505/30/113349xncprpd9eyi9idqc.png" alt="image.png" title="image.png" /><br />
<img src="data/attachment/forum/202505/30/112046tt7cii7yxrxk1kwi.png" alt="image.png" title="image.png" /></p>
<p>查了好久没查出什么原因,猜测是任务调度与串口接收中断有冲突?串口接收中断优先级开到最高级也没用</p>
<p>找不出原因了,有没有大佬帮忙看一下。</p>
<p>以下是串口中断处理函数</p>
<p><img src="data/attachment/forum/202505/30/154308gjzfdxkzrre4d6ye.png" alt="image.png" title="image.png" /></p>
<p>以下是RTX51 Tiny配置</p>
<p><img src="data/attachment/forum/202505/30/154419elf19uupuhcfccu1.png" alt="image.png" title="image.png" /></p>
<p>工程文件放在最后</p>
<p><a href="forum.php?mod=attachment&aid=102053" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:06-串口2中断模式与电脑收发测试.zip</a></p>
这个是干啥的,可以直接用? haiyang201 发表于 2025-5-30 15:12
这个是干啥的,可以直接用?
这是RTX51 Tiny自带的一个延时函数,通过#include"RTX51TNY.h"头文件调用的 1MS滴答中断对于TINY来说有点太快了, Ayb_ice 发表于 2025-5-30 15:26
1MS滴答中断对于TINY来说有点太快了,
因为我设置了INT_CLOCK是1ms,而且这只是一个串口查询接收任务,就算把时间加大了也还是会丢数据。 试试这样
if(RI2)
{
u8 ucTmp = S2BUF;
CLR_RI2();
if(COM2.RX_Cnt >= COM_RX2_Lenth) COM2.RX_Cnt = 0;
RX2_Buffer = ucTmp;
COM2.RX_TimeOut = TimeOutSet2;
} Ayb_ice 发表于 2025-5-30 15:37
试试这样
if(RI2)
{
<p>串口接收中断这里有接收和发送处理了</p>
<p><img src="data/attachment/forum/202505/30/154134xasyeywa222ro7wa.png" alt="image.png" title="image.png" /></p>
波特率降低点试试 Ayb_ice 发表于 2025-5-30 15:43
波特率降低点试试
<p>这个可以,波特率降到9600后,就不会丢数据了</p>
<p><img src="data/attachment/forum/202505/30/154724lv00k326zvvqpapx.png" alt="image.png" title="image.png" /></p>
<p>但这是为什么呢<img alt="penxue" class="emoji" src="https://www.stcaimcu.com/static/image/smiley/default/penxue.gif" title="penxue" /></p>
ZARD渐空 发表于 2025-5-30 15:47
这个可以,波特率降到9600后,就不会丢数据了
但这是为什么呢
页:
[1]
2