導讀
在串口通信開發中,數據錯亂是常見問題。本文將快速介紹串口標志位的作用及配置方法,幫助解決數據傳輸錯誤。
有用戶反饋“串口應用層數據錯亂、與發送端發送的字節數不匹配”,簡單來說就是接收和發送的數據不對,而且還存在幀數據錯亂的情況。經排查,是程序沒用設置ISIG標志位設置引起的。本節以此為切入點進行展開,對串口設置的一些標志位進行簡單說明。
1. c_cflag:可以設置波特率、字符大小、數據位、停止位、奇偶校驗位和硬軟流控等
1.1 波特率

1.2 其它

初始化c_flag時,不能直接對 c_cflag 成員進行賦值,而是需要通過“與”、“或”操作使用其中的某些選項,例如:
- 設置硬件流控制
c_cflag |= CNEW_RTSCTS
無硬件流控制
c_cflag &= ~CNEW_RTSCTS
2. c_iflag:用于控制端口接收端的字符輸入處理

禁用軟件流控制是禁止上面的選項。
c_iflag &= ~(IXON | IXOFF | IXANY);
3. c_oflag:用于控制終端端口發送出去的字符處理
因為現在終端的速度比以前快得多,所以大部分延時掩碼幾乎沒什么用途。
啟用輸出處理需要在 c_oflag 成員中啟用 OPOST 選項。
c_oflag |= OPOST;
使用原始輸出,就是禁用輸出處理,使數據能不經過處理過濾的完整地輸出到串口。當 OPOST 被禁止,c_oflag 其它選項也被忽略。
c_oflag &= ~OPOST;
4. c_lflag:用于控制控制終端的本地數據處理和工作模式
4.1 選擇規范模式
c_lflag |= (ICANON | ECHO | ECHOE);
4.2 選擇原始模式
c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
5. c_cc:定義特殊控制特性
-
數據傳輸
+關注
關注
9文章
2015瀏覽量
66006 -
串口通信
+關注
關注
34文章
1639瀏覽量
56767 -
串口數據
+關注
關注
0文章
34瀏覽量
14110
發布評論請先 登錄
有關STM32串口收發標志位的問題
STM32串口TXE和TC標志位的相關資料推薦
單片機復位標志位的設置與應用研究
問題筆記:STM32串口數據位與校驗位

STM32 串口TXE和TC標志位的理解

評論