请教串口问题。32G单片机。串口4 定时器4作为波特率定时器。通过USB转串口CP210X和电脑连接(usb转串口没问题,采用论坛DMA不定长接收都正确)现在自己学习最基本的串口程序。
在串口中断中
void Uart4Isr() interrupt 18
{
if (S4TI) // 发送中断标志置1时
{
S4TI = 0; // 清零发送中断标志
busy = 0; // 清零忙状态
}
if (S4RI) // 接收中断标志置1时
{
S4RI = 0; // 清零接收中断标志
buffer[i] = S4BUF; // 接收长度16
i++;
if(i>15) i = 0;
}
现在如果我通过ISP调试助手一次发送16字节数据 只有第一个数据正常。后面都不正常。但是如果我用调试助手每次发送一个数据,连续发送16次。接收正常。百思不得其解。
在主程序中 当按键按下的时候将收到的数据返回电脑。
key1flag = 1; // 按下标志置1
for(i=0;i<16;i++)
{ UartSend(buffer[i]); }
单独给数组赋值。按键按下 电脑接收正常。
菜鸟 本想着一步一步进步。结果卡在这里了。