娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月18日(星期日)

2021年05月18日 | STM32庫函數void USART_SendData()的缺陷和解決方法

發布者:dong125612 來源: eefocus關鍵字:STM32  庫函數  void 手機看文章 掃描二維碼
隨時隨地手機看文章

簡介:本文主要談到了STM32庫函數void USART_SendData()存在的一些問題,針對這些問題提到了3個解決方案,一起來看看。


2.1問題及現象


使用USART_SendData()函數非連續發送單個字符是沒有問題的;當連續發送字符時(兩個字符間沒有延時),就會發現發送緩沖區有溢出現象。若發送的數據量很小時,此時串口發送的只是最后一個字符,當發送數據量大時,就會導致發送的數據莫名其妙的丟失。


如:


for(TxCounter = 0;TxCounter < RxCounter; TxCounter++)


USART_SendData(USART1, RxBuffer[TxCounter]);


2.2原因


此API函數不完善,函數體內部沒有一個判斷一個字符是否發送完畢的語句,而是把數據直接放入發送緩沖區,當連續發送數據時,由于發送移位寄存器的速度限制(與通信波特率有關),導致發送緩沖區的數據溢出,老的數據還未及時發送出去,新的數據又把發送緩沖區的老數據覆蓋了。


2.3 解決方法(目前總結的兩種方案)


方案1.加入延時函數(下下策),不需要修改USART_SendData()函數


for(TxCounter = 0;TxCounter < RxCounter; TxCounter++){


USART_SendData(USART1, RxBuffer[TxCounter]);


DelayMS(2); //加入一個小的延時


}


方案2.修改USART_SendData()函數,在其內部加入發送緩沖區的USART_FLAG_TXE狀態檢測語句,確保一個字符完全發送出去,才進行下一個字符的發送。


實現方法:每發送一個字符都檢測狀態寄存器,確保數據已經發送完畢。具體操作步驟如下所示。


修改前的函數定義體


void USART_SendData(USART_TypeDef* USARTx, u16 Data)


{


/* Check the parameters */


assert_param(IS_USART_ALL_PERIPH(USARTx));


assert_param(IS_USART_DATA(Data));




/* Transmit Data */


USARTx->DR = (Data & (u16)0x01FF);


}


修改后的函數定義體


void USART_SendData(USART_TypeDef* USARTx, u16 Data)


{


/* Check the parameters */


assert_param(IS_USART_ALL_PERIPH(USARTx));


assert_param(IS_USART_DATA(Data))


/* Transmit Data */


USARTx->DR = (Data & (u16)0x01FF);


while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET){} //等待發送緩沖區空才能發送下一個字符


}


方案3.不修改原來的庫函數,在每一個字符發送后檢測狀態位。


USART_SendData(USART1, RxBuffer[TxCounter]);


while(USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET){} //等待發送緩沖區空才能發送下一個字符


ST這么做的原因是:使用發送中斷功能。


關鍵字:STM32  庫函數  void 引用地址:STM32庫函數void USART_SendData()的缺陷和解決方法

上一篇:基于STM32單片機的DLP驅動電路研究
下一篇:最后一頁

推薦閱讀

  無人駕駛汽車毫無疑問是未來大勢所趨,但可靠性、安全性問題也十分關鍵,之前也確實有黑客成功黑進無人駕駛汽車。下面就隨汽車電子小編一起來了解一下相關內容吧?! ≡诘诙檬澜缰悄艽髸?,周鴻祎首先表示自己非常期待無人駕駛汽車,國家也有規劃,2020年智能汽車新車占比會到50%,Level 3級別無人駕駛可占10%?! ‰S后周鴻祎開始潑冷水。他認為...
據外媒報道,當地時間5月16日,美國國家運輸安全委員會(NTSB)表示,2018年3月1日在佛羅里達州Delray Beach發生的一起特斯拉車致命事故中,事故車使用了Autopilot自動駕駛系統。這至少是美國報道的第三起涉及該駕駛輔助系統的致命事故。這起事故再次引發了人們對駕駛輔助系統探測危險能力的質疑,以及對該駕駛輔助系統安全性的擔憂。特斯拉Autopilot可以...
一:使用JLink V8燒寫Nor Flash方法:一. 做好準備工作:比如安裝JLink驅動,USB轉串口驅動(如果是筆記本)...二. 將開發板跳線撥到Nor端,連接好JLink,JLink另外一端連接在筆記本USB端口上,開發板上電。三. 燒寫:(1)打開 開始->SEGGER->J-Link ARM V4.081->J-Flash ARM;(2)File->Open Project,打開s3c2440a_embedclub.jflash(此文件...
導讀:美國科學家發明了一種新型的鋰金屬固態電池,這種電池可以避免在電解液中形成樹突。他的多層電池可以在10到20分鐘內為電動汽車充滿電。哈佛大學的研究人員聲稱,他們已經開發出了一種鋰金屬固態電池,這種電池的穩定性得到了提高,并增強了防止鋰枝晶穿透的能力。研究員李鑫說:“我們的研究表明,固態電池與商用液體電解質鋰離子電池有根本的區別,...

史海拾趣

問答坊 | AI 解惑

集成電路代換方法與技巧

集成電路代換方法與技巧  …

查看全部問答∨

請幫忙識別“IC”

大家發,請幫個忙,識別下圖片的IC型號 這個放大器是用在GSM 1800MHz放大器里的,但不知是什么型號?誰知道請幫幫忙,謝謝~ 是不是RFMD公司的產品?…

查看全部問答∨

買相機需要注意什么

本帖最后由 ddllxxrr 于 2016-1-7 17:19 編輯 我想買一款CCD 模擬攝像機,主要應該注意哪些參數呢?希望大家多提寶貴意見,謝謝啦! …

查看全部問答∨

stm8有有沒有公開的參考價?

                                 stm8 有有沒有公開的參考價?…

查看全部問答∨

STM8COSMIC編譯器的問題!

                                 memcpy(buff,buff+2,10);這樣拷貝,拷出來的數據是錯誤的。不知道如何解決了…

查看全部問答∨

為什么我把某個任務刪除了,但任務還在運行?

void Task0 (void *pdata){uint8 err;uint16 i;pdata = pdata;Uart0ReviceMbox = OSMboxCreate(NULL);Uart3ReviceMbox = OSMboxCreate(NULL); OSMutexCreate(3,&err);Test2toTest = OSSemCreate(0);OSTaskCreate(TaskGetTime,(void *)0,&TaskGe ...…

查看全部問答∨

ADUC7060 之DAC

ADUC7060的DAC在16BIT插值模式下工作時,該數據格式是怎樣的   在12BIT的時候27:16 在16BIT的時候27:16  還有15:12   現在換了2種模式后,輸出沒什么區別!   這個16BIT下,哪個15:12的4位數據是 高4位還是低4位那 ...…

查看全部問答∨

關於stm8 軟體復位的問題??

想請問各位大大~~不知道stm8有沒有像 stm32的軟體復位的功能呢~~如果有如何使用呢~~~…

查看全部問答∨

求解在arm下 rs485通信怎么編程?

求解在arm下 rs485通信怎么編程,我是初學者,求詳細點…

查看全部問答∨

基于單片機 的freemodbus協議

有哪位大俠正在做過基于單片機 的modbus協議,小弟我研究里一段時間了,尚有些疑問,可以交流一下…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 北安市| 麻江县| 吴川市| 嘉义县| 息烽县| 乌拉特中旗| 邓州市| 天等县| 紫阳县| 嘉定区| 广丰县| 德江县| 错那县| 肇东市| 晋江市| 嘉祥县| 罗甸县| 米脂县| 类乌齐县| 策勒县| 星座| 漳州市| 门头沟区| 临西县| 永宁县| 搜索| 苗栗县| 图木舒克市| 崇阳县| 临沂市| 江源县| 伊通| 普兰县| 洪江市| 聊城市| 长海县| 嘉定区| 马龙县| 泰和县| 巴南区| 普陀区|