新 唐 的 ARM M0 核,在 处理 串口 时 发现 一个 问题,很 困惑!
当 串口 收一个 字节,就 发一个 字节的时 候串 口没问题!
当 串口 直接 发 送一串 字符串,字符串的长度 不超过1 0个bye,没问题!
当串 口发送比 较长的字 串时,串口 助手 只能接收 到一部分! 例如 以下 程序:
发送:abcd efgh ijklmn opqrstu wxyz1234567890\n
却只能接收到:abcd efghi jklmnop
当调试 程序,单步走的 时候 可以完全 发出去,全速 的情况 下就会 少一部分,波特率 设为9600 或者115200 情况都一样,求高手 指点!
// 发送 调用 函数
void UART_Send_String(char part,char* string)
{
switch(part)
{
case 0:
while(*string)
{
_UART_SENDBYTE(UART0,*string);
string++;
}
break;
case 1:
while(*string)
{
_UART_SENDBYTE(UART1,*string);
string++;
}
break;
}
}
//以 下在 main 程序 中:
while(1)
{
// _UART_SENDBYTE(UART0,0x10);
// UART_Send_String(0,a);
for(i=0;i<999;i++)
for(j=0;j<999;j++);
P4->DOUT = 0x0ul;
for(i=0;i<999;i++)
for(j=0;j<999;j++);
P4->DOUT = 0x7ul<<1;
UART_Send_String(1,"abcdefghijklmnopqrstuvwxyz1234567890\n");
}
ARM 单片机 串口 串口通信
------解决方案--------------------
我这的DrvUART.c,nuvoton提供的
/*---------------------------------------------------------------------*/
/* Function: DrvUART_Write */
/* */
/* Parameter: */
/* u32Port -[in] UART Channel: UART_PORT0 / UART_PORT1 /UART_PORT2 */