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

STM32串口接收不定長(zhǎng)數(shù)據(jù)(接收中斷+超時(shí)判斷)

發(fā)布者:RadiantDreams最新更新時(shí)間:2024-12-17 來(lái)源: jianshu關(guān)鍵字:STM32  串口接收  不定長(zhǎng)數(shù)據(jù)  接收中斷  超時(shí)判斷 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

void uart2_rx_clear(void)

{

    memset(uart2_rx_buf, 0, sizeof(uart2_rx_buf));          //清空接收緩沖區(qū)

    uart2_cnt = 0;                                          //接收計(jì)數(shù)器清零

}


uart2.h 文件內(nèi)容如下:

#include

#include 'usart.h'


/* 引腳定義 */

#define UART2_TX_GPIO_PORT           GPIOA

#define UART2_TX_GPIO_PIN            GPIO_PIN_2

#define UART2_TX_GPIO_CLK_ENABLE()   do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)


#define UART2_RX_GPIO_PORT           GPIOA

#define UART2_RX_GPIO_PIN            GPIO_PIN_3

#define UART2_RX_GPIO_CLK_ENABLE()   do{ __HAL_RCC_GPIOA_CLK_ENABLE(); }while(0)


#define UART2_INTERFACE              USART2

#define UART2_IRQn                   USART2_IRQn

#define UART2_IRQHandler             USART2_IRQHandler

#define UART2_CLK_ENABLE()           do{ __HAL_RCC_USART2_CLK_ENABLE(); }while(0)


/* 錯(cuò)誤代碼 */

#define UART_EOK                     0   /* 沒(méi)有錯(cuò)誤 */

#define UART_ERROR                   1   /* 通用錯(cuò)誤 */

#define UART_ETIMEOUT                2   /* 超時(shí)錯(cuò)誤 */

#define UART_EINVAL                  3   /* 參數(shù)錯(cuò)誤 */


/* UART收發(fā)緩沖大小 */

#define UART2_RX_BUF_SIZE            128

#define UART2_TX_BUF_SIZE            64


void uart2_init(uint32_t baudrate);

uint8_t uart2_wait_receive(void);

void uart2_rx_clear(void);

一切判斷就緒后,我們就可以將代碼燒進(jìn)板子,現(xiàn)象如下:

5. 小結(jié)

STM32 串口通訊在項(xiàng)目中使用的頻率非常高,但由于不知道數(shù)據(jù)發(fā)送方會(huì)發(fā)送多少數(shù)據(jù)量,所以串口接收不定長(zhǎng)數(shù)據(jù)成了一個(gè)急需解決的問(wèn)題。

[1] [2]
關(guān)鍵字:STM32  串口接收  不定長(zhǎng)數(shù)據(jù)  接收中斷  超時(shí)判斷 引用地址:STM32串口接收不定長(zhǎng)數(shù)據(jù)(接收中斷+超時(shí)判斷)

上一篇:《嵌入式-STM32開(kāi)發(fā)指南》第二部分 基礎(chǔ)篇 - 第3章 按鍵(HAL庫(kù))
下一篇:《嵌入式-STM32開(kāi)發(fā)指南》第二部分 基礎(chǔ)篇 - 第7章DMA(HAL庫(kù))

推薦閱讀最新更新時(shí)間:2025-06-16 03:06

STM32 | 串口空閑中斷接收定長(zhǎng)數(shù)據(jù)(DMA方式)
在使用STM32的串口接收數(shù)據(jù)的時(shí)候,我們常常會(huì)使用接收中斷的方式來(lái)接收數(shù)據(jù),常用的是RXNE。這里分享另一種接收數(shù)據(jù)的方式——IDLE中斷(PS:本文的例子運(yùn)行在STM32F103ZET6上)。 一、IDLE中斷什么時(shí)候發(fā)生? IDLE就是串口收到一幀數(shù)據(jù)后,發(fā)生的中斷。什么是一幀數(shù)據(jù)呢?比如說(shuō)給單片機(jī)一次發(fā)來(lái)1個(gè)字節(jié),或者一次發(fā)來(lái)8個(gè)字節(jié),這些一次發(fā)來(lái)的數(shù)據(jù),就稱(chēng)為一幀數(shù)據(jù),也可以叫做一包數(shù)據(jù)。 二、RXNE中斷和IDLE中斷的區(qū)別? 當(dāng)接收到1個(gè)字節(jié),就會(huì)產(chǎn)生RXNE中斷,當(dāng)接收到一幀數(shù)據(jù),就會(huì)產(chǎn)生IDLE中斷。比如給單片機(jī)一次性發(fā)送了8個(gè)字節(jié),就會(huì)產(chǎn)生8次RXNE中斷,1次IDLE中斷。 三、IDLE中斷如何配
[單片機(jī)]
<font color='red'>STM32</font> | <font color='red'>串口</font>空閑<font color='red'>中斷</font><font color='red'>接收</font>不<font color='red'>定長(zhǎng)</font><font color='red'>數(shù)據(jù)</font>(DMA方式)
C51:串口通信接收與發(fā)送
假設(shè)要發(fā)送一組數(shù)據(jù) Send 一般采用查詢(xún)發(fā)送(循環(huán)發(fā)送)方式: unsigned char Send ; //發(fā)送量 unsigned char i; //循環(huán)量 for(i=0;i 10;i++) { SBUF= Send ; //發(fā)送 while(TI==0); //等待發(fā)送完成 TI=0; //清標(biāo)志 } 采用中斷發(fā)送方式: unsigned char Send ; //發(fā)送量 unsigned char num; //發(fā)送數(shù)據(jù)
[單片機(jī)]
51單片機(jī)串口程序,字符串/16進(jìn)制發(fā)送與接收
這篇文章將說(shuō)明51串口通信的發(fā)送與接收。分為:?jiǎn)蝹€(gè)字符接收,字符串接收;十進(jìn)制發(fā)送與接收,十六進(jìn)制發(fā)送與接收。 字符串發(fā)送與十六進(jìn)制發(fā)送,參考:http://blog.csdn.net/yibu_refresh/article/details/22695063 程序皆由PC串口工具發(fā)送,由單片機(jī)接收,并返回接收值給PC機(jī)。 一:?jiǎn)蝹€(gè)字符的發(fā)送與接收 #include reg52.h #define uint unsigned int #define uchar unsigned char //定義接收 字符 uchar Buffer; //串口初始化函數(shù) void URATinit( ) { TMOD=0x20; S
[單片機(jī)]
51單片機(jī)<font color='red'>串口</font>程序,字符串/16進(jìn)制發(fā)送與<font color='red'>接收</font>
基于stm32的多功能時(shí)鐘10——數(shù)據(jù)采集與藍(lán)牙控制
嘿,我的小可愛(ài)們! 在《藍(lán)牙串口通信》這一章中,小編帶著大家編寫(xiě)了藍(lán)牙串口通信程序,測(cè)試了藍(lán)牙通信正常。由于我后來(lái)又找到了《藍(lán)牙調(diào)試器》軟件,功能強(qiáng)大,可自定義控件,所以下面將編寫(xiě)通信協(xié)議,通過(guò)這款軟件,來(lái)實(shí)現(xiàn)數(shù)據(jù)采集和藍(lán)牙控制。而我們?cè)谏弦徽轮校瓿闪怂{(lán)牙監(jiān)控界面的設(shè)計(jì),所以這一章中,我們開(kāi)始講解程序的編寫(xiě)。 首先,我們要將數(shù)據(jù)包設(shè)置成結(jié)構(gòu)體的形式,便于后面的操作和管理,同時(shí)定義接收數(shù)據(jù)堆棧和發(fā)送數(shù)據(jù)堆棧。之所以這樣做,是因?yàn)橥ㄐ艆f(xié)議規(guī)定,數(shù)據(jù)包必須包括起始字節(jié)、數(shù)據(jù)字節(jié)、校驗(yàn)字節(jié)和結(jié)束字節(jié),這樣做的目的就是確保數(shù)據(jù)傳輸?shù)恼_性和穩(wěn)定性。關(guān)于通信方面的知識(shí),我以后用到的話(huà),還會(huì)介紹的,例如ESP8266等
[單片機(jī)]
使用MCU GD32替代STM32的體會(huì)
GD32作為國(guó)產(chǎn)MCU里的佼佼者,產(chǎn)品線(xiàn)也比較豐富,是替代STM32的一個(gè)很好的選擇。前段時(shí)間有個(gè)項(xiàng)目用到GD32的單片機(jī),今天來(lái)說(shuō)說(shuō)使用的一些體會(huì)。 1.硬件我用的單片機(jī)型號(hào)為GD32F405RGT6,對(duì)應(yīng)STM32F405RGT6。首先,硬件上基本兼容,有一點(diǎn)不同的是GD32的31和47腳為NC,STM32的為VCAP。STM32這兩個(gè)引腳需要分別連接一個(gè)電容到GND,而GD32則不需要。當(dāng)然,有這兩個(gè)電容也無(wú)所謂,所以,硬件上GD32可以直接替換STM32。 仿真器可以使用Jlink,也可以使用STLink,但是下載程序時(shí)會(huì)彈框提示,非ST芯片。 2.軟件軟件上,前期
[單片機(jī)]
使用MCU GD32替代<font color='red'>STM32</font>的體會(huì)
STM32 DMA
DMA,全稱(chēng)為:Direct Memory Access,即直接存儲(chǔ)器訪問(wèn),DMA 傳輸將數(shù)據(jù)從一個(gè)地址空間復(fù)制到另外一個(gè)地址空間。當(dāng) CPU 初始化這個(gè)傳輸動(dòng)作,傳輸動(dòng)作本身是由DMA 控制器 來(lái)實(shí)行和完成。典型的例子就是移動(dòng)一個(gè)外部?jī)?nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū)。像是這樣的操作并沒(méi)有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。 DMA 傳輸對(duì)于高效能嵌入式系統(tǒng)算法和網(wǎng)絡(luò)是很重要的。DMA 傳輸方式無(wú)需 CPU 直接控制傳輸,也沒(méi)有中斷處理方式那樣保留現(xiàn)場(chǎng)和恢復(fù)現(xiàn)場(chǎng)的過(guò)程,通過(guò)硬件為 RAM 與 I/O 設(shè)備開(kāi)辟一條直接傳送數(shù)據(jù)的通路,能使 CPU 的效率大為提高。DMA 是個(gè)非常好的功能,它不但能減輕 CPU 負(fù)擔(dān)
[單片機(jī)]
STM32的SRAM調(diào)試
據(jù)說(shuō)Flash的擦寫(xiě)次數(shù)是有限的,所以在調(diào)試的時(shí)候擦來(lái)擦去不好,看到boot0、boot1可以配置從SRam啟動(dòng),就查了相關(guān)資料,試了一下,ok了。記錄一下,免得以后又忘了。跟flash調(diào)試部分相同的就不再描述了,重點(diǎn)在于SRam調(diào)試的設(shè)置部分,大部分以圖片形式。 Dbg_RAM.ini(D:KeilARMBoardsKeilMCBSTM32Blinky下面有一個(gè),其實(shí)MCBSTM32目錄下的都一樣的,只要有)的內(nèi)容: /*---------------------------------------------------------------------------- * Name: Dbg_RAM.ini *
[單片機(jī)]
要用STM32實(shí)現(xiàn)什么?為什么使用STM32而不是8051?
單片機(jī)用處這么廣,尤其是STM32生態(tài)這么火!如何快速上手學(xué)習(xí)呢? 你要考慮的是,要用STM32實(shí)現(xiàn)什么 為什么使用STM32而不是8051? 是因?yàn)?1的頻率太低,無(wú)法滿(mǎn)足計(jì)算需求?是51的管腳太少,無(wú)法滿(mǎn)足眾多外設(shè)的IO? 是51的功耗太大,電池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的內(nèi)存太小而你要存儲(chǔ)的東西太多? 當(dāng)你需要使用STM32某些功能,而51實(shí)現(xiàn)不了的時(shí)候,那STM32自然不需要學(xué)習(xí),你會(huì)直接去尋找STM32某方面的使用方法。比如要用spi協(xié)議的網(wǎng)卡、要使用串口通信、要使用rtos等等。寄存器vs庫(kù)函數(shù) 我的觀點(diǎn)是:當(dāng)你debug的時(shí)候寄存器很重要,當(dāng)你需要理解芯片工作細(xì)節(jié)
[單片機(jī)]
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 黄龙县| 新民市| 天津市| 武冈市| 休宁县| 江源县| 云林县| 五原县| 巴中市| 湘潭县| 伊吾县| 启东市| 浑源县| 河南省| 太白县| 湖北省| 岐山县| 镇坪县| 浮山县| 霞浦县| 河源市| 麦盖提县| 电白县| 礼泉县| 尉犁县| 于田县| 皋兰县| 台南市| 天津市| 玉龙| 旬阳县| 天等县| 名山县| 祥云县| 兰州市| 翁源县| 申扎县| 波密县| 昌吉市| 惠来县| 大冶市|