STM32FF407串口发送数据错误,调试时显示缓冲区数据是正确的,请大家帮帮忙看一下,不胜感激!

2019-07-20 22:34发布

附代码如下:
void TData(uint8_t *_usBuf, uint8_t _usLen)   {          uint8_t  Tx_Status, Txread, Txwrite, Txcounter;        uint16_t  i;                       Txread =p_uart.Tx_read;        Txcounter =p_uart.Tx_counter;                      //将待发送数据缓冲区写入UART发送数据缓冲区        for(i=0; i<_usLen;i++)        {                 if(++Txread>= USART1_TX_BUF_SIZE)                 {                         Txread= 0;                 }                                         if(++Txcounter>= USART1_TX_BUF_SIZE)  //判断发送缓冲区数据个数                 {                         Txcounter= 0;                 }                                   p_uart.pTxBuf[p_uart.Tx_write]= _usBuf;                      if(++p_uart.Tx_write>= USART1_TX_BUF_SIZE)                      {                         p_uart.Tx_write= 0;                 }                 p_uart.Tx_counter++;                                       }        USART_ITConfig(USART1, USART_IT_TXE,ENABLE);  

if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)     {             USART_ClearITPendingBit(USART1,USART_IT_TXE);             if(p_uart.Tx_read== p_uart.Tx_write)            //没有新数据             {                     USART_ITConfig(USART1,USART_IT_TXE, DISABLE);                                         USART_ITConfig(USART1,USART_IT_TC, ENABLE);                }             else             {                     USART_SendData(USART1,p_uart.pTxBuf[p_uart.Tx_read]);                     while(USART_GetFlagStatus(USART1,USART_FLAG_TXE == RESET));                                         if(++p_uart.Tx_read>= USART1_TX_BUF_SIZE)                     {                       p_uart.Tx_read = 0;                     }                     p_uart.Tx_counter--;             }}        else if(USART_GetITStatus(USART1, USART_IT_TC) !=RESET){      USART_ClearITPendingBit(USART1,USART_IT_TC);    //清除发送完成标志位      if(p_uart.Tx_read == p_uart.Tx_write)            //没有新数据      {        USART_ITConfig(USART1, USART_IT_TC,DISABLE);   //关闭发送完成中断      }      else             {                     USART_SendData(USART1,p_uart.pTxBuf[p_uart.Tx_read]);                     while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);                                           if(++p_uart.Tx_read>= USART1_TX_BUF_SIZE)                     {                             p_uart.Tx_read= 0;                     }                     p_uart.Tx_counter--;             }}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
DAY_AND_DAY
1楼-- · 2019-07-21 21:11
 精彩回答 2  元偷偷看……
止天
2楼-- · 2019-07-21 22:55

直接删掉
DAY_AND_DAY
3楼-- · 2019-07-22 03:51
我删掉了,但是问题依旧存在。
DAY_AND_DAY
4楼-- · 2019-07-22 03:57
 精彩回答 2  元偷偷看……
DAY_AND_DAY
5楼-- · 2019-07-22 07:20
DAY_AND_DAY 发表于 2016-4-27 13:44
我删掉了,但是问题依旧存在。

会不会是波特率的问题???
xuyaqi
6楼-- · 2019-07-22 12:24
要想别人帮你还是把工程贴出来,这种片段别人没法帮。

一周热门 更多>