精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

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

GD32 485發(fā)送異常最常見原因

聚沃科技 ? 2024-01-16 09:39 ? 次閱讀

相信有小伙伴們遇到過這樣的問題,在使用GD32進(jìn)行串口485發(fā)送的時候,明明發(fā)送了特定長度的數(shù)據(jù),但從機(jī)就是不響應(yīng),現(xiàn)在就讓我們來解析下最常見的一個原因。

我們先來看一段代碼:

wKgaomWl3gqAJZXVAABoigA4cuY198.png

這是采用輪訓(xùn)方式進(jìn)行485發(fā)送的函數(shù),首先將485傳輸方向設(shè)置為發(fā)送,然后進(jìn)行長度為len的數(shù)據(jù)發(fā)送,發(fā)送完成后將485傳輸方向設(shè)置為接收??此七@段代碼沒有問題,但當(dāng)放在MCU上運(yùn)行后發(fā)現(xiàn),從機(jī)會少收到兩個字節(jié)的數(shù)據(jù)。

這是因為,串口是有數(shù)據(jù)寄存器和移位寄存器,當(dāng)最后一次判斷TBE不為“0”并調(diào)用usart_data_transmit函數(shù)后,實際上倒數(shù)第二個字節(jié)的數(shù)據(jù)正在發(fā)送移位寄存器中對外發(fā)送,最后一個字節(jié)在數(shù)據(jù)寄存器中,此時如果將485傳輸方向改為接收,那么最后兩個字節(jié)的數(shù)據(jù)將不會發(fā)送到485總線上。

wKgaomWl3g6AGAiqAAFHRDPXKl8257.png

解決這個問題的辦法也很簡單,只需要增加一個判斷TC的過程就可以了。

wKgZomWl3hOAb3ZeAACHd7DUbGU502.png

TC標(biāo)志位用來指示是不是所有的數(shù)據(jù)(包括數(shù)據(jù)寄存器和發(fā)送移位寄存器)都已經(jīng)發(fā)送完成,如果發(fā)送完成則置“1”。

前面講述的是使用輪訓(xùn)方式進(jìn)行發(fā)送,如果用DMA發(fā)送和中斷發(fā)送怎么辦呢?其實道理是一樣的,在DMA發(fā)送和中斷發(fā)送兩種模式中都要打開TC中斷,只有進(jìn)入了TC中斷后,才能將傳輸方向切換為接收,小伙伴們明白了嗎?

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

    關(guān)注

    6020

    文章

    44351

    瀏覽量

    628200
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1533

    瀏覽量

    75436
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    398

    瀏覽量

    23966
收藏 人收藏

    評論

    相關(guān)推薦

    GD32和STM32單片機(jī)的區(qū)別

     GD32和STM32都是常見的32位單片機(jī)系列。STM32是意法半導(dǎo)體(STMicroelectronics)公司推出的產(chǎn)品線,而GD32則是國內(nèi)公司長盛電子推出的產(chǎn)品線。
    發(fā)表于 08-07 17:36 ?5250次閱讀
    <b class='flag-5'>GD32</b>和STM32單片機(jī)的區(qū)別

    GD32 485發(fā)送異常最常見原因#GD32 #單片機(jī) #單片機(jī)開發(fā) #嵌入式開發(fā)

    mcu電工單片機(jī)開發(fā)
    聚沃科技
    發(fā)布于 :2024年01月17日 09:46:38

    什么是GD32

    一、前言什么GD32?GD32是國內(nèi)開發(fā)的一款單片機(jī),據(jù)說開發(fā)的人員是來自ST公司的,GD32也是以STM32作為模板做出來的。所以GD32和STM32有很多地方都是一樣的,不過
    發(fā)表于 08-12 07:46

    GD32芯片包添加步驟有哪些

    **GD32芯片包添加步驟**GD32開發(fā)環(huán)境可以有多個選擇,常見的開發(fā)編譯環(huán)境有:Keil4,keil5,IAR。本教程針對keil5如何添加GD32系列mcu芯片型號做出講解。1.
    發(fā)表于 11-22 08:30

    如何利用stm32f407+485發(fā)送modbus RTU協(xié)議

    任務(wù)內(nèi)容用485發(fā)送modbus TCP協(xié)議,用modbus調(diào)試軟件modsim32 查看發(fā)送及響應(yīng)的數(shù)據(jù)。用的是正點(diǎn)原子的開發(fā)板,stm32f407.任務(wù)實現(xiàn)485
    發(fā)表于 02-21 07:04

    RS485發(fā)送時,影響其他串口接收?為什么呢?

    今天做了一個小項目1變連接的是航模遙控器接收SBUS數(shù)據(jù)。使用的是stm32的串口3。2還有一邊連接的是485控制云臺攝像頭,使用的是串口2轉(zhuǎn)485。正常sbus數(shù)據(jù)不會停,會一直接收。即使失控也會有數(shù)據(jù),只要不掉電。但是當(dāng)我給485
    發(fā)表于 11-12 16:39

    STM32F103ZET6基于RS485發(fā)送接收簡單例程

    這是一個STM32F103ZET6基于HAL庫的RS485發(fā)送接收簡單例程,如需后期開發(fā)只需要添加自己的串口協(xié)議。
    發(fā)表于 08-29 16:08 ?306次下載

    GD32 DMA串口通訊DEMO

    GD32 DMA串口通訊GD32 USART0 DMA發(fā)送與接收不定長數(shù)據(jù)GD32E230簡介GD32E230采用DMA進(jìn)行串口通訊例程
    發(fā)表于 11-26 19:36 ?74次下載
    <b class='flag-5'>GD32</b> DMA串口通訊DEMO

    stm32f407+485發(fā)送modbus RTU協(xié)議 適合初學(xué)者

    任務(wù)內(nèi)容用485發(fā)送modbus TCP協(xié)議,用modbus調(diào)試軟件modsim32 查看發(fā)送及響應(yīng)的數(shù)據(jù)。用的是正點(diǎn)原子的開發(fā)板,stm32f407.任務(wù)實現(xiàn)485
    發(fā)表于 12-24 19:16 ?53次下載
    stm32f407+<b class='flag-5'>485</b><b class='flag-5'>發(fā)送</b>modbus RTU協(xié)議 適合初學(xué)者

    485發(fā)送接收切換問題討論

    485發(fā)送接收切換導(dǎo)致最后一位數(shù)據(jù)停止位丟失)現(xiàn)象現(xiàn)象單片機(jī)485發(fā)送接收常規(guī)做法是在發(fā)送完成中斷控制4
    發(fā)表于 01-14 13:20 ?6次下載
    <b class='flag-5'>485</b><b class='flag-5'>發(fā)送</b>接收切換問題討論

    GD32芯片怎么樣?GD32芯片運(yùn)行速度慢的原因

    STM32、TI MSP、Freescale Kinetis等常見的MCU產(chǎn)品相比,GD32芯片具有低功耗、高性價比和良好的性能等特點(diǎn)。
    發(fā)表于 08-07 18:25 ?3755次閱讀

    gd32和stm32哪個好?

    gd32和stm32哪個好? GD32和STM32是兩種常見的微控制器系列,是開發(fā)者們常用的開發(fā)板核心。盡管它們相似之處很多,但它們也存在著差異,本文將深入探討GD32和STM32,分
    的頭像 發(fā)表于 08-16 11:32 ?1398次閱讀

    GD32與STM32兼容嗎?

    GD32與STM32兼容嗎? GD32與STM32是兩個不同的微控制器系列,是由兩個不同的公司設(shè)計和生產(chǎn)的。GD32系列是由國內(nèi)的長沙國芯微電子設(shè)計和生產(chǎn)的,而STM32系列則是由歐洲
    的頭像 發(fā)表于 08-16 11:32 ?2677次閱讀

    GD32 串口接受異常的幾個原因

    前面我們介紹過GD32 485發(fā)送時出現(xiàn)異常最常見原因,有小伙伴反饋想要知道
    的頭像 發(fā)表于 01-18 09:57 ?3810次閱讀
    <b class='flag-5'>GD32</b> 串口接受<b class='flag-5'>異常</b>的幾個<b class='flag-5'>原因</b>

    GD32 MCU ISP失敗的原因

    玩過GD32的小伙伴們都知道,GD32 MCU支持ISP,即在系統(tǒng)編程,前面的常見問題也給大家講過什么是ISP,什么是IAP?那有沒有小伙伴遇到過ISP失敗的情況,失敗的原因是什么呢?
    的頭像 發(fā)表于 02-28 09:23 ?1188次閱讀
    <b class='flag-5'>GD32</b> MCU ISP失敗的<b class='flag-5'>原因</b>