上方是發送數據的例子,那么串口接收又該如何配置,又要在串口發送的例子上做哪些更改呢?
這里我們可以通過查詢或者中斷的方式來進行接收數據的兩種方式。
- 查詢方式就是通過不斷的查詢RXNE標志位,通過判斷RXNE位的狀態來確定數據是否接收。
- 中斷方式就是通過配置接收輸出控制通道,配置NVIC,在中斷服務子函數里進行數據的接收。
1. 需要更改的地方
既然我們要實現串口的接收,那么就要配置串口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 發送模式 RX 接收模式
2. 查詢RXNE標志位
這里我們還是來看一看RXNE標志位的描述
上圖描述,為0時數據沒有收到,為1時收到了數據,數據可以從RDR里讀出
所以在主程序里不斷讀取RXNE標志位,如果為1,表示數據可以讀出
uint8_t RX_Data;
int main()
{
Serial_Init();
Serial_SendByte(0x16);
while(1)
{
if(USART_GetFlagStatus(USART2,USART_FLAG_RXNE)==SET) //0 循環等待 1 可以接收數據
{
RX_Data=USART_ReceiveData(USART2);
Serial_SendByte(RX_Data);
}
}
}
下圖為程序現象:pc向單片機發送數據0x15,單片機接收數據0x15,并且把接收到的數據作為數據發送到pc,在pc上顯示0x15。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
STM32
+關注
關注
2270文章
10914瀏覽量
356724 -
中斷
+關注
關注
5文章
900瀏覽量
41584 -
串口通信
+關注
關注
34文章
1627瀏覽量
55600
發布評論請先 登錄
相關推薦
三種labview串口接收數據方式
了串行通信中斷接收及數據處理的技巧。作者已經把該技術成功運用到了部隊和工業控制的實際項目中。MSCOMM文件夾中為使用微軟MSCOMM串口控件方式,利用事件回調注冊是現在事件
發表于 11-08 11:08
labview與51串口通信的兩種方式
Labview串口通信要學會兩種方法,一種是利用visa(虛擬儀器軟件構架),另一種是調用activeX控件。第一種方法(VISA)程序如圖
發表于 09-06 16:03
51單片機與上位機通訊的兩種串口通訊方式
51系列單片機與上位機通訊有兩種串口通訊方式: 方式一.使用自帶串口通訊模塊,使用RxD/TxD口,用內置定時器產生波特率,通過中斷
發表于 07-19 08:22
SQL語言的兩種使用方式
SQL語言的兩種使用方式在終端交互方式下使用,稱為交互式SQL嵌入在高級語言的程序中使用,稱為嵌入式SQL―高級語言如C、Java等,稱為宿主語言嵌入式SQL的實現方式源程序(用主語言
發表于 12-20 06:51
vnc和xrdp兩種遠程連接的方式
[zju嵌入式]樹莓派之遠程桌面 之前兩篇介紹了通過串口和ssh登陸到樹莓派的方法,這兩種方式的有點在于連接方面,響應速度快,但是也有不夠直觀的缺點,沒辦法看到圖形界面.在這篇博文中,
發表于 12-24 07:54
【科普】常見的兩種串口通信
在串行通信中,數據通常是在兩個站之間傳送,按照數據在通信線路上的傳送方向可分為3種基本的傳送方式:單工、半雙工和全雙工。單工通信使用一根導線
發表于 11-16 13:50
?7408次閱讀
labview串口接收數據_labview串口被動接收數據
字節的數據。最后,用一個狀態機來實現相鄰兩個字符串的判斷。如果串口在相鄰兩個字符串之間接收時間大于50ms,則判斷為
發表于 01-15 15:49
?6.7w次閱讀
評論