那曲檬骨新材料有限公司

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

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

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

串口發(fā)送的這幾種寫法,你用過(guò)幾種?

jf_pJlTbmA9 ? 來(lái)源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-11-02 16:20 ? 次閱讀

一、STM32用USART發(fā)送字符串

void UART_Send_Message(u8 *Data)
{
  while(*Data!='?')
  {
      USART_SendData(USART1, *Data);
      while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);//讀取串口狀態(tài)
      Data++;
  }
}
 
void main(void)
{
  u8 str_buf[500];
  memset((char *)  str_buf, 0, sizeof(str_buf));
  UART_Send_Message(str_buf);
}

pYYBAGIB2JCANeDlAABaPG26uyU307.jpg
poYBAGIB2JKAAgOoAADcQH4C2Vw401.jpg

while(SET == USART_GetFlagStatus(USART1,USART_FLAG_RXNE));

含義是:當(dāng)接收引腳有數(shù)據(jù)時(shí),狀態(tài)寄存器的USART_FLAG_RXNE就會(huì)為1,此時(shí)USART_GetFlagStatus(USART1,USART_FLAG_RXNE)的返回值就為1(SET),若無(wú)數(shù)據(jù)則為RESET。

二、USART_FLAG_TXE和USART_FLAG_TC怎么用

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

特殊情況指的是:

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

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

【上面兩種主要用于芯片對(duì)電源控制的項(xiàng)目中】

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

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

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

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

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

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

常見(jiàn)寫法一

poYBAGIB2JSAYHr3AAALTrKKaP4183.png
pYYBAGIB2JWAEg8vAAAdFRfPn5I835.png

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

2、常見(jiàn)寫法二

pYYBAGIB2JeAQgDlAAAKWjsaLQQ970.png
poYBAGIB2JiAVDcbAAAc5wK0SCo307.png

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

3、常見(jiàn)寫法三

poYBAGIB2JmAOj7BAAALWgTxmTA496.png
pYYBAGIB2JqAEEQAAAAdF6NcPn4113.png

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

4、寫法四

pYYBAGIB2JuAP9qiAAAJIDOgFXs339.png
poYBAGIB2J2AGqmWAAAgHdBothY493.png

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

5、寫法五(正確寫法)

poYBAGIB2J6AVfi8AAAJtYBIDMc825.png
pYYBAGIB2J-AUs4EAAAdl4VsIbs308.png

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

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

審核編輯:湯梓紅

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

    關(guān)注

    2272

    文章

    10923

    瀏覽量

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

    關(guān)注

    14

    文章

    1557

    瀏覽量

    77037
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30968
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    柵漏電流噪聲有哪幾種模型?這幾種模型有什么局限性?

    常見(jiàn)的柵漏電流噪聲模型有哪幾種這幾種模型的特性是什么?有什么局限性?
    發(fā)表于 04-09 06:44

    柵漏電流噪聲有哪幾種模型?這幾種模型具有什么特性和局限性?

    柵漏電流噪聲特性是什么?柵漏電流噪聲有哪幾種模型?這幾種模型具有什么特性和局限性?
    發(fā)表于 04-14 06:53

    這幾種常見(jiàn)的薄膜電阻器都了解嗎?

    這幾種常見(jiàn)的薄膜電阻器都了解嗎?
    發(fā)表于 06-07 06:30

    常見(jiàn)的整流電路有哪幾種?如何去區(qū)分這幾種常見(jiàn)的整流電路?

    常見(jiàn)的整流電路有哪幾種?其特性是什么?如何去區(qū)分這幾種常見(jiàn)的整流電路?對(duì)整流電路中二極管的要求有哪些?
    發(fā)表于 07-11 07:19

    什么是串口通信?串口通信的基本方式有哪幾種

    什么是串口通信?串口通信的基本方式有哪幾種?異步數(shù)據(jù)的數(shù)據(jù)發(fā)送過(guò)程有哪些步驟?串口通信的數(shù)據(jù)格式是怎樣的?
    發(fā)表于 07-16 08:21

    如何使用bxCAN過(guò)濾器的這幾種工作模式呢

    bxCAN過(guò)濾器的工作模式有哪幾種?如何使用bxCAN過(guò)濾器的這幾種工作模式呢?對(duì)應(yīng)的代碼示例是怎樣的?
    發(fā)表于 11-01 07:07

    串口接收/發(fā)送有哪幾種模式?

    串口接收/發(fā)送有哪幾種模式?
    發(fā)表于 12-09 08:02

    串口發(fā)送數(shù)據(jù)的方式有哪幾種

    串口發(fā)送數(shù)據(jù)的方式有哪幾種
    發(fā)表于 12-10 07:49

    STM32串口數(shù)據(jù)的接收與發(fā)送處理的幾種模式分別是哪些

    STM32串口發(fā)送數(shù)據(jù)為什么會(huì)丟失呢?怎樣去解決?STM32串口數(shù)據(jù)的接收與發(fā)送處理的幾種模式分別是哪些?
    發(fā)表于 12-10 07:37

    C語(yǔ)言的main函數(shù)有幾種寫法

    從學(xué)習(xí)C語(yǔ)言開(kāi)始就一直寫個(gè)一個(gè)函數(shù),那么知道它的標(biāo)準(zhǔn)寫法什么什么樣嗎? main函數(shù),又稱主函數(shù),是程序執(zhí)行的起點(diǎn),我們平時(shí)寫的main函數(shù)是什么樣呢? 1,是這樣? main(){} 2,還是
    的頭像 發(fā)表于 10-15 11:04 ?3366次閱讀

    串口發(fā)送這幾種寫法用過(guò)幾種

    它們分別表示數(shù)據(jù)在發(fā)送過(guò)程中,在兩個(gè)不同的階段中的完成情況。TXE 表示數(shù)據(jù)被從發(fā)送緩沖區(qū)中取走,轉(zhuǎn)移到的移位寄存器中,此時(shí)發(fā)送緩沖是空的,可以向其中補(bǔ)充新的數(shù)據(jù)了。而 TC 則表示最后放入發(fā)
    發(fā)表于 02-08 15:16 ?2次下載
    <b class='flag-5'>串口</b><b class='flag-5'>發(fā)送</b>的<b class='flag-5'>這幾種</b><b class='flag-5'>寫法</b>,<b class='flag-5'>你</b><b class='flag-5'>用過(guò)</b><b class='flag-5'>幾種</b>?

    這幾種MOS管“擊穿”,了解嗎?

    MOSFET的擊穿有哪幾種?Source、Drain、Gate,場(chǎng)效應(yīng)管的三極:源級(jí)S 漏級(jí)D 柵級(jí)G,(這里不講柵極GOX擊穿了啊,只針對(duì)漏極電壓擊穿)。
    發(fā)表于 02-09 11:42 ?16次下載
    <b class='flag-5'>這幾種</b>MOS管“擊穿”,<b class='flag-5'>你</b>了解嗎?

    LABVIEW打開(kāi)調(diào)用子VI的幾種辦法

    總結(jié)了LABVIEW打開(kāi)調(diào)用子VI的幾種辦法,程序寫法
    發(fā)表于 08-20 15:31 ?53次下載

    對(duì)HPM6750的這幾種調(diào)試方式展開(kāi)介紹

    HPM6750支持jlink、dap和ft2232等多種調(diào)試方式,本文將對(duì)這幾種調(diào)試方式展開(kāi)介紹,方便大家靈活選用不同的調(diào)試方式。
    的頭像 發(fā)表于 02-01 09:56 ?3981次閱讀

    串口屏的幾種安裝方式

    串口屏的幾種安裝方式
    的頭像 發(fā)表于 05-10 11:28 ?1684次閱讀
    狮威百家乐娱乐场| 白菜娱乐城| 红9百家乐官网的玩法技巧和规则 高尔夫百家乐官网的玩法技巧和规则 | 百家乐官网技巧公司| 百家乐赢一注| 百家乐官网的看路技巧| 大发888真人娱乐场游戏| 百家乐官网轮盘一体机厂家| 亚洲博彩网| 24山吉凶图| 银泰国际娱乐城| 百家乐赌博破解| 百家乐官网任你博娱乐网| 亲朋棋牌刷金币| 百家乐官网如何骗人| 济州岛娱乐场小伊| 百家乐博彩通网| 赌场百家乐官网规则| 百家乐怎么玩请指教| 淘宝博百家乐官网的玩法技巧和规则| 六合彩130| 百家乐群121398015| 澳门百家乐官网真人娱乐场| 大发888怎么玩| 百家乐一代龙虎机| 澳门百家乐官网上下限| 威尼斯人娱乐城信誉好不好| 新利百家乐官网的玩法技巧和规则| 新葡京娱乐场| 百家乐必赢术| 联众百家乐官网的玩法技巧和规则| 清原| 棋牌百家乐有稳赚的方法吗| 网上百家乐官网游戏玩法 | 百家乐微笑玩| 免费百家乐官网追号工具| 百家乐官网胜率被控制| 大发888优惠代码 官网| 现场百家乐平台源码| 百家乐官网游戏作弊| 环球娱乐城|