lpc1769 uart信号发送问题

2019-07-15 17:08发布

想请问一下有没有人遇到过这样的问题:
我用uart发出信号给下位机,中间经过一个RS485收发器,单片机上P2.12引脚控制RS485收发器的Enable,发送信号时,置P2.12高,发送完信号后,立刻变为低,因为还要从下位机接收信号。发送代码如下:
void bat_sendSOCReq()
{
        LPC_GPIO2->SET |= (1<<12);

        while(!((UART_SELECtiON_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0x01;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0x03;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0x00;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0x29;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0x00;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0x23;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0xD5;
        while(!((UART_SELECTION_Batt->LSR)>>0x05)&0x01);
        UART_SELECTION_Batt->THR = 0xDB;
        while(!((UART_SELECTION_PC->LSR)>>0x06)&0x01);

        LPC_GPIO2->CLR |= (1<<12);
}
但是,每次8位信号还没有发送完,P2.12就提前变为低,导致最后两位信号发送不出去。即使添加了delay在LPC_GPIO2->CLR |= (1<<12)之前还是一样的结果。

Unbenannt2.PNG
图中红 {MOD}的是我发出的信号,黄 {MOD}的是经过RS485收发器的信号,绿 {MOD}的是P2.12引脚
可以看到,绿 {MOD}信号在红 {MOD}信号还没有发送完之前就变低了。

如果有类似经历的朋友拜托指点一二,帮我找找原因,不胜感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。