1325986650 发表于 2025-1-4 08:27:03

非常感谢AI擎天柱板子已经收到。串口问题请教

<p>请教串口问题。32G单片机。串口4 定时器4作为波特率定时器。通过USB转串口CP210X和电脑连接(usb转串口没问题,采用论坛DMA不定长接收都正确)现在自己学习最基本的串口程序。</p>
<p>在串口中断中</p>
<p>void Uart4Isr() interrupt 18<br />
{<br />
if (S4TI)                                                                                // 发送中断标志置1时<br />
{<br />
S4TI = 0;                                                                        // 清零发送中断标志<br />
busy = 0;                                                                        // 清零忙状态<br />
}<br />
if (S4RI)                                                                                // 接收中断标志置1时<br />
{<br />
S4RI = 0;                                                                        // 清零接收中断标志</p>
<pre><code>buffer = S4BUF;        // 接收长度16
        i++;
        if(i&gt;15) i = 0;

}
</code></pre>
<p>现在如果我通过ISP调试助手一次发送16字节数据只有第一个数据正常。后面都不正常。但是如果我用调试助手每次发送一个数据,连续发送16次。接收正常。百思不得其解。</p>
<p>在主程序中 当按键按下的时候将收到的数据返回电脑。</p>
<p>key1flag = 1;                                                                // 按下标志置1<br />
for(i=0;i&lt;16;i++)<br />
{ UartSend(buffer);        }</p>
<p>单独给数组赋值。按键按下 电脑接收正常。</p>
<p>菜鸟本想着一步一步进步。结果卡在这里了。</p>

DebugLab 发表于 2025-1-4 13:00:00

注意指针和各个状态,可以看下我的程序
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4598

1325986650 发表于 2025-1-5 11:04:47

调试助手 停止位 选择 2一切正常。
页: [1]
查看完整版本: 非常感谢AI擎天柱板子已经收到。串口问题请教