新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > stm32 USART_IT_IDLE

        stm32 USART_IT_IDLE

        作者: 時間:2016-12-03 來源:網絡 收藏
        請注意IDLE中斷是只檢測到空閑幀時產生的中斷。

        而空閑幀的定義是:被視為完全由“1"組成的一個完整的數據幀,后面跟著包含?數據的下一幀的開始位。

        關鍵是后面半句話,要求有下一幀的開始位,而你的情況恰巧沒有下一幀的開始位(傳輸已經結束),當然不會有中斷了。


        舉例:
        如果連續發送一串字符串“123”會發生空閑中斷嗎?
        不會,因為沒有下一幀的開始位。
        如果進了空閑中斷不手動清零,會一直進入空閑中斷。

        所以用這個IDLEIE來結束DMA方式的接收,是合適的。唯一一個不合適的地方是:如果你發送一個字符串后,將DMA設置好接收傳輸方式,然后:對方沒響應,你一個字符也收不到,這時候,IDLEIE是不會來的,必須有個總超時檢測來結束DMA接收方式:因為IDLEIE中斷必須要有字符串收到,然后有一個字符的時間沒收下一個字符的起始位,才會發生。

        另外,1個字符間隔的空閑就結束接收:是默認任何對方發送字節的間隔不大于1個字符間隔,是不符合Modbus-RTU協議的,RTU協議是3.5個字符時間,如果收到"a"后,停了2個字符時間,又收到"b",Modbus-RTU還是認為ab是同一幀的連續字符。


        關鍵詞: stm32USART_IT_IDL

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 浦城县| 年辖:市辖区| 玉树县| 泗阳县| 朝阳市| 沂源县| 榕江县| 乌鲁木齐县| 丹江口市| 昌都县| 白银市| 台南县| 泾阳县| 钟山县| 贺州市| 赤水市| 商丘市| 黑河市| 洪洞县| 饶阳县| 合作市| 伊吾县| 定安县| 清苑县| 扎囊县| 揭西县| 牙克石市| 仁怀市| 鄂托克旗| 浏阳市| 互助| 临沭县| 三江| 昌平区| 无锡市| 乃东县| 关岭| 武川县| 山西省| 襄垣县| 萝北县|