[技术问答] URAT0发送数据问题

[复制链接]
972|5
 楼主| tinan 发表于 2017-3-30 13:21 | 显示全部楼层 |阅读模式
单步运行以下代码可以正常发送24个字节数据  但是全速运行的时候为什么只发送16个字节的数据
void UART_Send(void)
{
                int32_t i=0;
                P32=1;                                                //设置485为输出模式
                int32_t arr[24]={0xFF,0xFF,0x11,0x53,0x80,0x00,0x01,0x00,0x00,0x01,0x00,0xE6,0x9A,0x97,0x9A,0x6A,0x50,0x39,0xA5,0x66,0xE6,0x95,0x98,0xA5};
                for(i=0;i<24;i++)
                {
                                UART_WRITE(UART0,arr[i]);
                }       
}
zhuotuzi 发表于 2017-3-30 20:21 | 显示全部楼层
你的for循环设置的是24啊,难道全速时候 没有执行完就跳出了?
zhuotuzi 发表于 2017-3-30 20:22 | 显示全部楼层
void UART_Send(void)
这个函数你可以设置成带参数的,可以用指针传递,然后通过结束符号判断是否发送结束。while没有遇到结束符号时候一直移动指针发送。
天灵灵地灵灵 发表于 2017-3-30 20:36 | 显示全部楼层
没看出来毛病,但是不知道数组是什么ASCII码,不会有结束符吧?
Lbsonggz 发表于 2017-4-1 22:37 | 显示全部楼层
0xff和0x00等在通讯中有特殊含义,对着ASCII码表查查,也与使用的串口软件有关系,很多字符有特殊含义或标记是不可见的
a_ziliu 发表于 2017-4-3 22:30 | 显示全部楼层
UART_WRITE中,判斷uart 是不是fifo full,  如果是full的時侯等一下,怕被後面的資料蓋過去。
void SendChar_ToUART(int ch)
{
    while(uart0->FSR & UART_FSR_TX_FULL_F_Msk);
    uart0->THR = ch;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部