STM32串列埠收發

2021-10-19 07:02:13 字數 1588 閱讀 2997

串列埠初始化

使能串列埠

使能中斷

傳送資料

接收資料

獲取狀態標誌位

清除狀態標誌位

獲取中斷狀態標誌位

清除中斷狀態標誌位

#define usart_rec_len  			200  	

//定義最大接收位元組數 200

#define en_usart1_rx 1

//使能(1)/禁止(0)串列埠1接收

extern u8 usart_rx_buf[usart_rec_len]

;//接收緩衝,最大usart_rec_len個位元組.末位元組為換行符

extern u16 usart_rx_sta;

//接收狀態標記

對於usart_rx_sta

bit15

bit14

bit13-0

接收完成標誌

接收到0x0d置1

接收到的有效資料個數

當微控制器接收到資料後,進入串列埠中斷服務函式,並通過0-13位對接收的資料進行計數

當接收到0x0d,0-13位停止計數,若下乙個資料為0x0a則表示接收完成,若不是0x0a則需要重新接收。

例如傳送50個資料,首先資料會被儲存到usart_rx_buf中

然後usart_rx_sta的低十四位會計數50

之後微控制器傳送0x0d將bit14置1,若接下來接收到0x0a則將bit15置1

中斷服務函式

void

usart6_irqhandler

(void

)//串列埠6中斷服務程式

else

//還沒收到0x0d}}

}}

接收函式

if

(usart_rx_sta&

0x8000

)printf

("\r\n\r\n");

//插入換行

usart_rx_sta=0;

}

在xcom軟體中勾選傳送新行,則傳送的資料後自帶0x0d 0x0a

如何將接收到的字串轉化成整形資料?

利用atoi(字串)函式

首先包含標頭檔案

#include

"string.h"

在中斷服務函式中

int x;

//定義乙個全域性變數

void

usart6_irqhandler

(void

)//串列埠6中斷服務程式

}/*-------------------------將收到的資料轉化成整形賦值給x----------------------------------*/

}else

//還沒收到0x0d}}

}}

STM32 二 串列埠收發

使用485介面接收資料,然後返回接收的資料。usart configuration while 1 2.1.usart configuration 開起時鐘 io口時鐘 串列埠開時鐘 開啟復用時鐘 復用設定 中斷初始化 io輸入輸出設定 485共有3個引腳,收發控制引腳 預設為收 收引腳,發引腳。串...

關於stm32串列埠2收發問題。

串列埠問題對於乙個菜鳥來說,太重要了。學會看手冊好重要 stm32上有很多i o口,也有很多的內建外設想i2c,adc,isp,usart等 為了節省引出管腳,這些內建外設基本上是與i o口共用管腳的,也就是i o管腳的復用功能。但是stm32還有一特別之處就是 很多復用內建的外設的i o引腳可以通...

stm32串列埠通訊

通訊方式 1 同步通訊 帶時鐘同步訊號傳輸 spi,iic等 2 非同步通訊 不帶時鐘用途訊號 usrt,單匯流排 stm32串列埠引腳表 串口號 rxd txd 1 pa10 pa9 2 pa3pa2 3 pb11 pb10 4 pc11 pc10 5 pd2pc12 通訊過程 接收過程 由rx入...