91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

串口數(shù)據(jù)錯亂?從標(biāo)志位設(shè)置入手

ZLG致遠(yuǎn)電子 ? 2025-02-11 11:35 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

導(dǎo)讀

在串口通信開發(fā)中,數(shù)據(jù)錯亂是常見問題。本文將快速介紹串口標(biāo)志位的作用及配置方法,幫助解決數(shù)據(jù)傳輸錯誤。

有用戶反饋“串口應(yīng)用層數(shù)據(jù)錯亂、與發(fā)送端發(fā)送的字節(jié)數(shù)不匹配”,簡單來說就是接收和發(fā)送的數(shù)據(jù)不對,而且還存在幀數(shù)據(jù)錯亂的情況。經(jīng)排查,是程序沒用設(shè)置ISIG標(biāo)志位設(shè)置引起的。本節(jié)以此為切入點進(jìn)行展開,對串口設(shè)置的一些標(biāo)志位進(jìn)行簡單說明。

1. c_cflag:可以設(shè)置波特率、字符大小、數(shù)據(jù)位、停止位、奇偶校驗位和硬軟流控等

1.1 波特率

4aba9ac6-e829-11ef-9434-92fbcf53809c.png

1.2 其它

4ad2ece8-e829-11ef-9434-92fbcf53809c.png

初始化c_flag時,不能直接對 c_cflag 成員進(jìn)行賦值,而是需要通過“與”、“或”操作使用其中的某些選項,例如:

  • 設(shè)置硬件流控制

c_cflag |= CNEW_RTSCTS

無硬件流控制

c_cflag &= ~CNEW_RTSCTS

2. c_iflag:用于控制端口接收端的字符輸入處理

4ae9ddb8-e829-11ef-9434-92fbcf53809c.png

禁用軟件流控制是禁止上面的選項。

c_iflag &= ~(IXON | IXOFF | IXANY);

3. c_oflag:用于控制終端端口發(fā)送出去的字符處理

4b15f902-e829-11ef-9434-92fbcf53809c.png

因為現(xiàn)在終端的速度比以前快得多,所以大部分延時掩碼幾乎沒什么用途。

啟用輸出處理需要在 c_oflag 成員中啟用 OPOST 選項。

c_oflag |= OPOST;

使用原始輸出,就是禁用輸出處理,使數(shù)據(jù)能不經(jīng)過處理過濾的完整地輸出到串口。當(dāng) OPOST 被禁止,c_oflag 其它選項也被忽略。

c_oflag &= ~OPOST;

4. c_lflag:用于控制控制終端的本地數(shù)據(jù)處理和工作模式

4b2a6888-e829-11ef-9434-92fbcf53809c.png

4.1 選擇規(guī)范模式

c_lflag |= (ICANON | ECHO | ECHOE);

4.2 選擇原始模式

c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

5. c_cc:定義特殊控制特性

4b49c6d8-e829-11ef-9434-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    2201

    瀏覽量

    67583
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1662

    瀏覽量

    57971
  • 串口數(shù)據(jù)
    +關(guān)注

    關(guān)注

    1

    文章

    34

    瀏覽量

    14272
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM8使用串口接收中斷時用不用清標(biāo)志?

    請問大家 串口 使用接收中斷的模式。 接收完數(shù)據(jù)之后, 用不用清 標(biāo)志什么的 ??? 我試過中斷中沒做清除標(biāo)志
    發(fā)表于 05-08 06:10

    有關(guān)STM32串口收發(fā)標(biāo)志的問題

    通過STM32的串口發(fā)數(shù)據(jù)是需要判斷發(fā)送是否完成,應(yīng)該用while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);還是while
    發(fā)表于 03-30 18:34

    怎么在標(biāo)志寄存器中設(shè)置讀取

    嘗試先做一些簡單的事情)。數(shù)據(jù)表表示,在讀取數(shù)據(jù)之前,我需要在標(biāo)志寄存器中設(shè)置讀取,并且我不必設(shè)置
    發(fā)表于 10-22 07:06

    TXE狀態(tài)標(biāo)志該位由硬件置

    TE標(biāo)志要想使串口能夠發(fā)送數(shù)據(jù),必須置TE標(biāo)志
    發(fā)表于 08-20 07:44

    用中斷接收串口數(shù)據(jù)為什么會存在串口接收數(shù)據(jù)錯亂的問題呢

    用中斷接收串口數(shù)據(jù)為什么會存在串口接收數(shù)據(jù)錯亂的問題呢?如何去解決?
    發(fā)表于 12-09 07:00

    STM32串口TXE和TC標(biāo)志的相關(guān)資料推薦

    STM32 串口TXE和TC標(biāo)志的理解我們發(fā)送數(shù)據(jù)的時候是先放在數(shù)據(jù)寄存器(TDR),然后在往移位寄存器里面丟,TXE就是用來判斷我們的
    發(fā)表于 02-22 07:11

    上位機如何設(shè)置串口9位數(shù)據(jù)位/TB8

    串口多機通訊,上位機如何設(shè)置串口9位數(shù)據(jù)位/TB8**常用的串口數(shù)據(jù)位
    發(fā)表于 02-23 07:28

    單片機硬件定時器5ms會導(dǎo)致串口接收錯亂

    120mhz單片機mpu6050的dmp很慢主板得接收另一塊板子發(fā)送的數(shù)據(jù)包(幀頭+數(shù)據(jù)+幀尾)主板需要定時讀取dmp進(jìn)行pid計算控制直立硬件定時器5ms會導(dǎo)致串口接收錯亂??加長至
    發(fā)表于 08-02 10:48

    單片機復(fù)位標(biāo)志設(shè)置與應(yīng)用研究

    設(shè)置復(fù)位標(biāo)志便于區(qū)分不同原因引發(fā)的復(fù)位,作為一種新技術(shù)被越來越多的新型單片機所采納。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半導(dǎo)體部)的MC68HC05
    發(fā)表于 04-28 11:39 ?22次下載

    STM32串口空閑中斷,中斷標(biāo)志無法清除

    STM32串口空閑中斷,中斷標(biāo)志無法清除
    發(fā)表于 12-02 17:36 ?31次下載
    STM32<b class='flag-5'>串口</b>空閑中斷,中斷<b class='flag-5'>標(biāo)志</b><b class='flag-5'>位</b>無法清除

    問題筆記:STM32串口數(shù)據(jù)位與校驗

    問題:STM32移植freemodbus 后測試時,只能使用無校驗 ,設(shè)置奇偶校驗時無法與上位機通訊解決方法如果串口助手使用串口配置為:數(shù)據(jù)位8 停止
    發(fā)表于 12-24 18:44 ?19次下載
    問題筆記:STM32<b class='flag-5'>串口</b><b class='flag-5'>數(shù)據(jù)位</b>與校驗<b class='flag-5'>位</b>

    STM32 串口TXE和TC標(biāo)志的理解

    STM32 串口TXE和TC標(biāo)志的理解我們發(fā)送數(shù)據(jù)的時候是先放在數(shù)據(jù)寄存器(TDR),然后在往移位寄存器里面丟,TXE就是用來判斷我們的
    發(fā)表于 12-27 19:18 ?5次下載
    STM32 <b class='flag-5'>串口</b>TXE和TC<b class='flag-5'>標(biāo)志</b><b class='flag-5'>位</b>的理解

    多機通訊設(shè)置TB8

    串口多機通訊,上位機如何設(shè)置串口9位數(shù)據(jù)位/TB8**常用的串口數(shù)據(jù)位
    發(fā)表于 12-29 19:31 ?1次下載
    多機通訊<b class='flag-5'>設(shè)置</b>TB8

    stm32串口接收中斷觸發(fā)原理

    配置串口接收中斷使能:在初始化串口時,需要設(shè)置相應(yīng)的控制寄存器來使能串口接收中斷。這通??梢酝ㄟ^設(shè)置相應(yīng)的
    發(fā)表于 01-17 15:42 ?9396次閱讀
    stm32<b class='flag-5'>串口</b>接收中斷觸發(fā)原理

    串口中斷需要清除標(biāo)志嗎,串口中斷標(biāo)志會自動清除嗎

    在電子通信領(lǐng)域,串口中斷作為一種重要的通信機制,廣泛應(yīng)用于各種嵌入式系統(tǒng)和計算機設(shè)備中。串口中斷標(biāo)志的管理,尤其是是否需要手動清除以及是否會自動清除,是理解和實現(xiàn)
    的頭像 發(fā)表于 01-29 14:59 ?3424次閱讀