6.2.4 狀態(tài)寄存器USART_SR
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| - | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| - | CTS | LBD | TXE | TC | RXNE | IDLE | ORE | NE | FE | PE |
Bit 9:CTS標志(如果設置了CTSE位,當nCTS輸入變化狀態(tài)時,該位被硬件置高,由軟件將其清零)
0:nCTS狀態(tài)線上沒有變化
1:nCTS狀態(tài)線上發(fā)生變化
Bit 8:LIN斷開檢測標志(當探測到LIN斷開時,該位由硬件置1,由軟件將其清零)
0:沒有檢測到LIN斷開
1:檢測到LIN斷開
Bit 7:發(fā)送數據寄存器空
當TDR寄存器中的數據被硬件轉移到移位寄存器時,該位被硬件置位,對USART_DR的寫操作,將該位清零。
0:數據還沒有被轉移到移位寄存器
1:數據已經被轉移到移位寄存器
Bit 6:發(fā)送完成
當包含有數據的一幀發(fā)送完成后,并且TXE=1時,由硬件將該位置’1’。然后寫入USART_DR清除該位。
0:發(fā)送還未完成
1:發(fā)送完成
Bit 5:讀數據寄存器非空
當數據被轉移到USART_DR寄存器中,該位被硬件置位。對USART_DR讀操作可以將該位清零。
0:數據沒有收到;
1:收到數據,可以讀出
Bit 4:檢測到總線空閑
當檢測到總線空閑時,該位被硬件置位,則產生中斷。先讀USART_SR,然后讀USART_DR清除該位。
0:沒有檢測到空閑總線
1:檢測到空閑總線
Bit 3:過載錯誤
當RXNE仍然是1的時候,當前被接收在移位寄存器中的數據,需要傳送至RDR寄存器時,硬件將該位置位,先讀USART_SR,然后讀USART_CR清零。
0:沒有過載錯誤
1:檢測到過載錯誤
Bit 2:噪聲錯誤標志
在接收到的幀檢測到噪音時,由硬件對該位置位。先讀USART_SR,再讀USART_DR清0。
0:沒有檢測到噪聲
1:檢測到噪聲
Bit 1:幀錯誤
當檢測到同步錯位,過多的噪聲或者檢測到斷開符,該位被硬件置位。先讀USART_SR,再讀USART_DR清零
0:沒有檢測到幀錯誤
1:檢測到幀錯誤或者break符
Bit 0:校驗錯誤
在接收模式下,如果出現奇偶校驗錯誤,硬件對該位置位。依次讀USART_SR和USART_DR清零,在清除PE位前,軟件必須等待RXNE標志位被置1。
0:沒有奇偶校驗錯誤;
1:奇偶校驗錯誤
6.3 printf函數重映射
學習C語言的時候會經常用到一個函數,就是格式化輸出printf,這個函數的源代碼如下所示。

從上圖可以看出來,printf函數實際上的核心是putchar函數,在KEIL中,由于我們使用了MicroLIB,所以putchar函數改為了fputc函數,此時,我們只需要修改fputc函數就可以完成printf重定向,重定向代碼如下圖所示。

6.4 串口例程
使用printf函數將串口接收到的字符串發(fā)送出去。
(1)底層寄存器文件stm32f10x.h添加串口寄存器地址。



(2)在SYSTEM目錄下新建usart1目錄,并在usart1目錄下新建usart1.c和usart1.h兩個文件。

(3)將usart1.c和usart1.h兩個文件加入工程。


(4)在usart1.c文件內寫入以下代碼。


(5)在usart1.h添加以下代碼。

(5)在1.c文件中添加以下代碼。

6.5 實驗結果

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6076文章
45495瀏覽量
670396 -
STM32
+關注
關注
2309文章
11162瀏覽量
373462 -
USART
+關注
關注
1文章
202瀏覽量
33166
發(fā)布評論請先 登錄
相關推薦
熱點推薦
小白高手都適用,STM32學習教程(入門合集、自學筆記和例程)
STM32的入門教程資料合集:主要內容為STM32的入門教程資料合集免費下載包括了:,《USART串口編程》,《如何安裝J-Link
發(fā)表于 04-10 14:56
CubeMX入門STM32 HAL庫的學習筆記
STM32CubeMX是ST官方開發(fā)的一款很好用的軟件,主要用于STM32系列單片機的硬件驅動層的配置。網上也有一些關于STM32CubeMX的相關教程,對它的相關操作進行說明。從今天
發(fā)表于 08-17 06:55
AN2557_STM32F10xxx使用USART的應用中編程
STM2T之AN2557_STM32F10xxx使用USART的應用中編程,很好的stm32資料,快來學習吧,免費的哦。
發(fā)表于 04-26 09:43
?14次下載
STM32之AN2582_STM32F10xxx USART應用
STM32之AN2582_STM32F10xxx USART應用實例,很好的STM32資料,快來學習
發(fā)表于 04-26 09:51
?27次下載
STM32各模塊學習筆記
STM32個模塊學習筆記 目錄 STM32筆記之一 中斷優(yōu)先級.......................................
發(fā)表于 11-30 03:32
?3351次閱讀
usart學習筆記
學習筆記USART介紹:目的:使用USART進行通信,收發(fā)數據更多介紹:stm32_CN -> p516頁框圖:中斷請求:T
發(fā)表于 12-04 17:21
?10次下載
STM32的USART窗口通訊程序
!”,上位機接收程序可以使用“串口調試助手“,也可自己編程。3)當上位機給stm32發(fā)送“Stop,stm32”后,stm32停止發(fā)送。實驗步驟安裝usb轉串口的
發(fā)表于 12-07 11:06
?3次下載
STM32學習之STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址)
STM32學習之STM32cubeMX軟件安裝與使用(附STM32cubeMX5.2.1下載地址
發(fā)表于 12-07 11:51
?30次下載
STM32的USART串口配置——學習筆記(5)
文章內容根據野火學習教程進行整理,僅僅是學習記錄。開發(fā)板: 野火STM32F429-挑戰(zhàn)者V2官方固件庫版本: STM32F4xx_DSP_StdPeriph_Lib_V1.8.0一、
發(fā)表于 12-28 19:00
?1次下載
STM32CubeMX與HAL庫學習--ADC與USART的簡單練習
,打算簡單的用一下,其實我就是把ADC的值讀一下再算一下就用USART發(fā)送出去。本文是學習過程的一點記錄。使用到的工具及版本:
發(fā)表于 01-12 20:27
?13次下載
STM32入門學習筆記之USART驅動實驗(上)
串口無法正常收發(fā),但是如果使用11.0592MHz晶振又會存在定時器計數誤差(即定時器計數不準確),在STM32中很好地解決了這個問題,并且擴展了串口的應用。
STM32入門學習筆記之USART驅動實驗(下)
評論