当前位置: 代码迷 >> 单片机 >> 串口有关问题,了解串口或串口高手必进
  详细解决方案

串口有关问题,了解串口或串口高手必进

热度:46   发布时间:2016-04-28 15:27:09.0
串口问题,了解串口或串口高手必进

新 唐 的 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           */
  相关解决方案