久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機串口處理獲得的經驗(stm32)

單片機串口處理獲得的經驗(stm32)

作者: 時間:2016-11-17 來源:網絡 收藏
最近搞了一個stm32串口數據幀批處理代碼,遇到了很多問題,作為剛工作的我,經驗太缺乏,實在是需要總結一番,以避免以后再出現同樣的錯誤。

大致情況羅列如下:

本文引用地址:http://cqxgywz.com/article/201611/315410.htm

1、串口接收中斷處理

在學校的時候根本沒有接觸過什么循環處理的方法,到現在我也講不上來這個方法的名字是什么,反正自己會運用了。大致的情況是環形數組處理,代碼如下:

//======================>> 接收數據中斷
if( USART_GetITStatus( COM_USARTx, USART_IT_RXNE ) != RESET )
{
if( COM_Rx_Sign == 1 )
{
COM_Cout_mS = DEF_COM_FRM_END_MS;
}
COM_Uart_RxBuf.Buf[ COM_Uart_RxBuf.WriteSize++ ] = USART_ReceiveData( COM_USARTx );
if( COM_Uart_RxBuf.WriteSize >= COM_TxRx_BUF_SIZE ) /* 循環接收數據存儲 */
{
COM_Uart_RxBuf.WriteSize = 0;
}
USART_ClearITPendingBit( COM_USARTx, USART_IT_RXNE );/* Clear the USART Receive interrupt */
}

2、發送數據處理

采用的是usart轉485接口,所以在常態要將485置為接受狀態,只有發送數據的時候才置為發送狀態。這樣說表面上看著沒啥問題,但是剛開始的時候一直出現發送數據最后一個字節丟失,我一直不知道問題,最后仿真器在中斷里面485置為接受之前設置了一個斷點



評論


技術專區

關閉