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)不再提示

關(guān)于 USART很多人都容易忽視的一個問題

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-24 11:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Ⅰ、寫在前面

今天這篇文章分享的知識點(diǎn)比較少,但比較重要,是大部分人在實際項目開發(fā)中都容易忽視,且容易犯下的低級錯誤。

本文講述在項目開發(fā)中,或在學(xué)習(xí)中經(jīng)常遇到USART發(fā)送字符串,對方?jīng)]有接收完成(最后一兩字節(jié)),也就是最后字節(jié)數(shù)據(jù)丟失了。具體可以看下面章節(jié)實驗。

關(guān)于本文的更多詳情請往下看。

Ⅱ、實例工程

為了方便大家學(xué)習(xí),提供實驗源代碼工程給大家參考。

STM32F10x_SART(驗證USART發(fā)送字符串):

https://yunpan.cn/ckInh8YTwWHVP訪問密碼 81f9

提供下載的實例實現(xiàn)的功能比較簡單,主要是用于驗證不同情況下,發(fā)送字符的不同。

實例實現(xiàn)功能可以從下面main函數(shù)中看的出來,打印數(shù)據(jù),進(jìn)入待機(jī)。為了方便用戶進(jìn)入待機(jī)不能下載程序,例程使用了一個喚醒按鍵PC13(可以修改),喚醒有一個LED閃爍和延時,這個期間可以重新下載代碼。

Ⅲ、本文要點(diǎn)

這里主要說的是在特殊情況下發(fā)送字符軟件代碼的寫法。

特殊情況指的是:

1.調(diào)用發(fā)送字符串函數(shù)“發(fā)送完”本機(jī)立即掉電;

2.調(diào)用發(fā)送字符串函數(shù)“發(fā)送完”從機(jī)立即掉電;

【上面兩種主要用于芯片對電源控制的項目中】

3.調(diào)用發(fā)送字符串函數(shù)“發(fā)送完”立刻進(jìn)入待機(jī)或停機(jī);

其實本文主要說的是兩個標(biāo)志位:USART_FLAG_TXE 和 USART_FLAG_TC.

USART_FLAG_TXE發(fā)送緩沖區(qū)空標(biāo)志:說明可以往數(shù)據(jù)寄存器寫入數(shù)據(jù)了,但并不代碼數(shù)據(jù)發(fā)送完成了。

USART_FLAG_TC發(fā)送完成標(biāo)志:這個才是代表USART在緩沖區(qū)的數(shù)據(jù)發(fā)送完成了,即從機(jī)接收到了數(shù)據(jù)。

這兩個標(biāo)志的區(qū)別在于:它們分別表示數(shù)據(jù)在發(fā)送過程中,在兩個不同的階段中的完成情況。TXE 表示數(shù)據(jù)被從發(fā)送緩沖區(qū)中取走,轉(zhuǎn)移到的移位寄存器中,此時發(fā)送緩沖是空的,可以向其中補(bǔ)充新的數(shù)據(jù)了。而 TC 則表示最后放入發(fā)送緩沖區(qū)的數(shù)據(jù)已經(jīng)完成了從移位寄存器向發(fā)送信號線 Tx 上的轉(zhuǎn)移。所以,判定數(shù)據(jù)最終發(fā)送完成的標(biāo)志是 TC,而不是 TXE.

下面講述在不同代碼寫法下,得到不同實驗效果【調(diào)試助手接收數(shù)據(jù)】:

1.常見寫法一

這種寫法在不是特殊(不掉電、不待機(jī)等)情況下,問題不大,USART數(shù)據(jù)會成功發(fā)送出去。 但是在上面說的特殊情況下,問題就來了,代碼只將數(shù)據(jù)放到了發(fā)送緩沖區(qū),而沒有發(fā)送出去就掉電或待機(jī)了,這個時候其實最后兩個字符是沒有發(fā)送出去的。

2.常見寫法二

這種寫法達(dá)到的效果和上面存在不同的就是倒數(shù)第二個數(shù)據(jù)發(fā)送出去了,也就是只有最后一個字符是沒有發(fā)送出去的。

3.常見寫法三


這種寫法達(dá)到的效果和上面兩種寫法有不一樣,發(fā)送了10個字符。

4.寫法四


這種寫法按理說可以實現(xiàn)功能,但實際多次試驗結(jié)果確實第一字節(jié)數(shù)據(jù)丟失了。

5.寫法五(正確寫法)


這種寫法是比較完成,為了保守起見,在特殊情況下使用該寫法。。

至此,常見軟件寫法都給出了源代碼和試驗效果,請根據(jù)自己實際情況寫代碼驗證。

Ⅳ、說明

以上幾點(diǎn)內(nèi)容比較容易出現(xiàn)問題,希望對你項目開發(fā)起到幫助作用。

以上總結(jié)僅供參考,若有不對之處,敬請諒解。

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

    關(guān)注

    96

    文章

    2953

    瀏覽量

    70308
  • USAR
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    8561
  • main
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    編寫生產(chǎn)級的Service配置文件

    systemctl start xxx 敲了無數(shù)遍,但真要從零寫 Service 文件丟到生產(chǎn)環(huán)境跑,很多人就開始心虛了。網(wǎng)上抄段配置,Type=simple 還是 forkin
    的頭像 發(fā)表于 02-25 14:24 ?155次閱讀

    別再忽視充電芯片了!HT4056H的這些保護(hù)功能真的很重要

    很多人在設(shè)計便攜設(shè)備時,往往把注意力放在主控芯片上,卻忽視了充電管理的重要性。HT4056H除了基本的恒流恒壓充電功能,還內(nèi)置了欠壓閉鎖、電池反接保護(hù)、溫度監(jiān)控等多重安全機(jī)制。TDFN2×2封裝讓它能輕松塞進(jìn)各種小設(shè)備里,40V耐壓更是給足了安全余量。做產(chǎn)品的朋友,充電安
    的頭像 發(fā)表于 02-25 11:42 ?224次閱讀
    別再<b class='flag-5'>忽視</b>充電芯片了!HT4056H的這些保護(hù)功能真的很重要

    國產(chǎn)MCU工具6月內(nèi)給原廠添加200+的經(jīng)驗分析

    萬能模板”解決所有型號。 模板必須有邊界, 而不是靠配置無限擴(kuò)展。 版本不是負(fù)擔(dān),而是保護(hù) 很多人抗拒“模板版本變多”, 但實際工程中發(fā)現(xiàn): 版本清晰 反而更容易維護(hù) 老型號更
    發(fā)表于 02-06 09:22

    國產(chǎn) MCU 原廠支持 200+ 型號的工程實踐記錄》

    萬能模板”解決所有型號。 模板必須有邊界, 而不是靠配置無限擴(kuò)展。 版本不是負(fù)擔(dān),而是保護(hù) 很多人抗拒“模板版本變多”, 但實際工程中發(fā)現(xiàn): 版本清晰 反而更容易維護(hù) 老型號更
    發(fā)表于 02-06 09:20

    ESP32和STM32哪個更容易學(xué)?

    很多人會問,ESP32和STM32到底哪個更容易學(xué)?其實這個問題有點(diǎn)像問自行車和汽車哪個更好開——取決于你想去哪兒,以及你享受的是過程還是結(jié)果。 ESP32更像是為你搭好舞臺的智
    的頭像 發(fā)表于 01-15 15:53 ?247次閱讀
    ESP32和STM32哪個更<b class='flag-5'>容易</b>學(xué)?

    電池包氣密性檢測設(shè)備使用誤區(qū),90%的人踩過-岳信儀器

    在電池包生產(chǎn)過程中,氣密性檢測設(shè)備是保障電池包質(zhì)量的關(guān)鍵工具。然而,很多人在使用這些設(shè)備時,常常陷入些誤區(qū),影響檢測結(jié)果的準(zhǔn)確性和設(shè)備的使用壽命。以下是些常見的使用誤區(qū)。(1)忽視
    的頭像 發(fā)表于 11-28 10:41 ?274次閱讀
    電池包氣密性檢測設(shè)備使用誤區(qū),90%的人<b class='flag-5'>都</b>踩過-岳信儀器

    遠(yuǎn)程IO不就是分布式IO?其實很多人理解錯了

    、引言 在工業(yè)自動化和控制系統(tǒng)中,分布式io和遠(yuǎn)程io作為兩種常見的IO技術(shù),各自具有獨(dú)特的特點(diǎn)和優(yōu)勢,以下對遠(yuǎn)程io和分布式io進(jìn)行詳細(xì)比較,以明確它們之間的區(qū)別。 二、位置范圍與連接方式 1
    的頭像 發(fā)表于 09-28 11:06 ?725次閱讀
    遠(yuǎn)程IO不就是分布式IO?其實<b class='flag-5'>很多人</b><b class='flag-5'>都</b>理解錯了

    LVGL近期很多人問,那它和Qt哪個好?

    最近拜訪做工業(yè)控制、智能家居的客戶時,常被問到同一個問題:嵌入式產(chǎn)品,GUI選LVGL還是Qt? 其實工具選擇沒有絕對的“好”與“壞”,但選對適配場景的GUI圖形用戶界面工具,能直接讓產(chǎn)品開發(fā)效率
    的頭像 發(fā)表于 09-23 15:54 ?1453次閱讀
    LVGL近期<b class='flag-5'>很多人</b>問,那它和Qt哪個好?

    應(yīng)急電源就是備用電源?很多人搞錯了,區(qū)別大到讓你驚呆!

    電源
    上海優(yōu)比施電子科技有限公司
    發(fā)布于 :2025年09月12日 11:13:02

    作為電力系統(tǒng)中的核心設(shè)備,很多人都不知道它

    ,為讀者呈現(xiàn)這關(guān)鍵電力設(shè)備的全景圖。 ### 、技術(shù)演進(jìn):從電磁感應(yīng)到智能化管控 1885年匈牙利工程師代里等三人發(fā)明變壓器原型機(jī)時,或許未曾預(yù)料到這個基于電磁感應(yīng)原理的設(shè)備會成為工業(yè)文明的基石?,F(xiàn)代變壓器通過初級
    的頭像 發(fā)表于 06-25 10:01 ?762次閱讀

    安富利推出個人安全追蹤器解決方案

    個人安全問題在日常生活中常常容易忽視,尤其是在獨(dú)處、探險或是身處偏遠(yuǎn)地帶時,很多人可能未能充分認(rèn)識到潛在的風(fēng)險。例如,遇到迷路、自然災(zāi)害、意外事故等突發(fā)狀況時,我們該如何求救?
    的頭像 發(fā)表于 05-22 13:45 ?983次閱讀
    安富利推出個人安全追蹤器解決方案

    ESD防護(hù)設(shè)計中的10常見誤區(qū),你中招了嗎?

    在現(xiàn)代電子產(chǎn)品中,ESD(靜電放電)防護(hù)已成為設(shè)計中不可忽視環(huán)。然而,即便是經(jīng)驗豐富的工程師,也常會在ESD設(shè)計中掉進(jìn)些看似“理所當(dāng)然”的誤區(qū)。以下總結(jié)了10在實際設(shè)計中最常見
    的頭像 發(fā)表于 04-24 09:51 ?1037次閱讀
    ESD防護(hù)設(shè)計中的10<b class='flag-5'>個</b>常見誤區(qū),你中招了嗎?

    STM32學(xué)習(xí)USART之基礎(chǔ)篇(可下載)

    今天分享 USART 設(shè)計前的基礎(chǔ)知識我們先來了解下有關(guān)通信的基本概念:通信:兩設(shè)備之間進(jìn)行數(shù)據(jù)交換時,稱這個過程為兩設(shè)備間的通信并行通信:設(shè)備之間的數(shù)據(jù)是以
    發(fā)表于 03-31 15:07 ?4次下載

    stm32g0b1中的usart5進(jìn)不去HAL_UARTEx_RxEventCallback,為什么?

    請教一下關(guān)于stm32g系列的問題,stm32g0b1中的usart5進(jìn)不去HAL_UARTEx_RxEventCallback,cudemx上配置跟其他串口也是樣的,打開中斷了,
    發(fā)表于 03-13 06:51

    為什么IIC總線會難住這么多人?

    為什么 IIC 總線讓很多人頭疼?其實可以把它想象成場復(fù)雜的 "設(shè)備對話游戲",新手容易在這些地方栽跟頭:
    的頭像 發(fā)表于 03-12 10:14 ?961次閱讀
    為什么IIC總線會難住這么<b class='flag-5'>多人</b>?