上方是發(fā)送數(shù)據(jù)的例子,那么串口接收又該如何配置,又要在串口發(fā)送的例子上做哪些更改呢?
這里我們可以通過查詢或者中斷的方式來進行接收數(shù)據(jù)的兩種方式。
- 查詢方式就是通過不斷的查詢RXNE標志位,通過判斷RXNE位的狀態(tài)來確定數(shù)據(jù)是否接收。
- 中斷方式就是通過配置接收輸出控制通道,配置NVIC,在中斷服務子函數(shù)里進行數(shù)據(jù)的接收。
1. 需要更改的地方
既然我們要實現(xiàn)串口的接收,那么就要配置串口RX引腳,在串口模式中添加USART_Mode_RX模式。
- 初始化RX引腳
//RX端
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉輸入
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //50MhZ
GPIO_Init(GPIOA,&GPIO_InitStructure);
- 添加串口模式
USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; //TX 發(fā)送模式 RX 接收模式
2. 查詢RXNE標志位
這里我們還是來看一看RXNE標志位的描述

上圖描述,為0時數(shù)據(jù)沒有收到,為1時收到了數(shù)據(jù),數(shù)據(jù)可以從RDR里讀出
所以在主程序里不斷讀取RXNE標志位,如果為1,表示數(shù)據(jù)可以讀出
uint8_t RX_Data;
int main()
{
Serial_Init();
Serial_SendByte(0x16);
while(1)
{
if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET) //0 循環(huán)等待 1 可以接收數(shù)據(jù)
{
RX_Data=USART_ReceiveData(USART2);
Serial_SendByte(RX_Data);
}
}
}
下圖為程序現(xiàn)象:pc向單片機發(fā)送數(shù)據(jù)0x15,單片機接收數(shù)據(jù)0x15,并且把接收到的數(shù)據(jù)作為數(shù)據(jù)發(fā)送到pc,在pc上顯示0x15。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
STM32
+關(guān)注
關(guān)注
2309文章
11162瀏覽量
373399 -
中斷
+關(guān)注
關(guān)注
5文章
917瀏覽量
43754 -
串口通信
+關(guān)注
關(guān)注
34文章
1662瀏覽量
57962
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
labview與51串口通信的兩種方式
Labview串口通信要學會兩種方法,一種是利用visa(虛擬儀器軟件構(gòu)架),另一種是調(diào)用activeX控件。第一種方法(VISA)程序如圖
發(fā)表于 09-06 16:03
51單片機與上位機通訊的兩種串口通訊方式
51系列單片機與上位機通訊有兩種串口通訊方式: 方式一.使用自帶串口通訊模塊,使用RxD/TxD口,用內(nèi)置定時器產(chǎn)生波特率,通過中斷
發(fā)表于 07-19 08:22
STM32的串口接收數(shù)據(jù)的方式
開發(fā)平臺:Keil 5庫函數(shù)版本:V3.5芯片:STM32F407VET6 1 STM32的串口接收數(shù)據(jù)的方式STM32的串口
發(fā)表于 08-16 08:02
串口通信的兩種方式
串口通信由兩種方式,第一種就是用微機原理課上學過的TX和RX兩個接口進行通信。不過根據(jù)去年的經(jīng)驗,這個板子直接用TX和RX
發(fā)表于 08-24 06:59
vnc和xrdp兩種遠程連接的方式
[zju嵌入式]樹莓派之遠程桌面 之前兩篇介紹了通過串口和ssh登陸到樹莓派的方法,這兩種方式的有點在于連接方面,響應速度快,但是也有不夠直觀的缺點,沒辦法看到圖形界面.在這篇博文中,
發(fā)表于 12-24 07:54
逆變器的兩種電流型控制方式
逆變器的兩種電流型控制方式
摘要:研究分析了逆變器的兩種雙環(huán)瞬時反饋控制方式——電流型準PWM控制方式和三態(tài)DPM
發(fā)表于 07-10 11:21
?4497次閱讀
【科普】常見的兩種串口通信
在串行通信中,數(shù)據(jù)通常是在兩個站之間傳送,按照數(shù)據(jù)在通信線路上的傳送方向可分為3種基本的傳送方式:單工、半雙工和全雙工。單工通信使用一根導線
發(fā)表于 11-16 13:50
?7991次閱讀
labview串口接收數(shù)據(jù)_labview串口被動接收數(shù)據(jù)
字節(jié)的數(shù)據(jù)。最后,用一個狀態(tài)機來實現(xiàn)相鄰兩個字符串的判斷。如果串口在相鄰兩個字符串之間接收時間大于50ms,則判斷為
發(fā)表于 01-15 15:49
?7w次閱讀
MATLAB/simulink中兩種實現(xiàn)建模方式的優(yōu)勢
導讀:本期文章主要介紹在MATLAB/simulink中建模時的兩種不同實現(xiàn)方式,一種是直接用現(xiàn)成的文件庫中的模塊進行搭建,一種是用Sfunction代碼實現(xiàn)。接下來以電壓型磁鏈觀測器
Pytroch中支持的兩種遷移學習方式
上述兩種遷移方式,分別適合大量數(shù)據(jù)跟少量數(shù)據(jù),前一種方式計算跟訓練時間會比第二
sqlite數(shù)據(jù)插入的兩種方式比較
sqlite工具包提供兩種數(shù)據(jù)插入方式,全部使用Execute SQL(Ploy)函數(shù)
串口接收數(shù)據(jù)的兩種方式是什么
評論