UART寄存器介紹

在 STM32 微控制器中,UART(通用異步收發傳輸器)通信通過多個寄存器實現配置和數據傳輸。下面詳細解析 UART 的核心寄存器及其功能。

1. 狀態寄存器(USART_SR)

狀態寄存器反映 UART 當前的工作狀態,用于判斷數據傳輸是否完成、是否接收到數據等。

主要位功能
名稱功能
7TXE發送緩沖區為空(1 = 空,可寫入新數據)。寫入 DR 寄存器后自動清零。
6TC發送完成(1 = 傳輸結束)。需軟件清零(寫 1 清除)。
5RXNE接收緩沖區非空(1 = 接收到數據)。讀取 DR 寄存器后自動清零。
3IDLE檢測到總線空閑(1 = 空閑)。需先讀 SR,再讀 DR 清零。
2ORE溢出錯誤(1 = 數據丟失)。需讀 SR,再讀 DR 清零。
0PE奇偶校驗錯誤(1 = 校驗失敗)。需軟件清零。
應用場景
  • 發送數據:檢查TXETC標志,確保緩沖區為空或傳輸完成。
  • 接收數據:檢查RXNE標志,確認有新數據可讀。
  • 錯誤處理:檢查OREPE等標志,處理通信異常。

2. 數據寄存器(USART_DR)

數據寄存器用于存儲發送和接收的數據,實際由兩個獨立的寄存器組成:

  • 發送緩沖區寄存器(TDR):寫入DR時,數據被存入 TDR,隨后傳輸到移位寄存器。
  • 接收緩沖區寄存器(RDR):接收到的數據先存入移位寄存器,再轉移到 RDR,讀取DR時獲取 RDR 內容。
注意事項
  • 數據位寬由CR1M位決定(8 位或 9 位)。
  • 寫入DR會清除TXE標志,讀取DR會清除RXNE標志。

3. 波特率寄存器(USART_BRR)

波特率寄存器用于配置 UART 的通信速率,計算公式如下:

波特率 = fPCLK / (16 * USARTDIV)

其中:

  • fPCLK:UART 時鐘頻率(APB 總線時鐘)。
  • USARTDIV:分頻系數,由BRR寄存器的整數部分([15:4])和小數部分([3:0])組成。
示例

假設fPCLK = 84MHz,波特率為 115200:

USARTDIV = 84000000 / (16 * 115200) ≈ 45.5729
整數部分 = 45 (0x2D)
小數部分 = 0.5729 * 16 ≈ 9 (0x9)
BRR = 0x2D9

4. 控制寄存器 1(USART_CR1)

控制寄存器 1 用于配置 UART 的基本功能,如使能、字長、奇偶校驗等。

主要位功能
名稱功能
13UEUART 使能(1 = 使能)。
12M字長(0=8 位 + 校驗,1=9 位 + 校驗)。
10PCE奇偶校驗使能(1 = 使能)。
9PS奇偶校驗類型(0 = 偶校驗,1 = 奇校驗)。
7TXEIE發送緩沖區空中斷使能(1 = 使能)。
6TCIE發送完成中斷使能(1 = 使能)。
5RXNEIE接收緩沖區非空中斷使能(1 = 使能)。
4IDLEIE空閑線路檢測中斷使能(1 = 使能)。
3TE發送使能(1 = 使能)。
2RE接收使能(1 = 使能)。
0OVER8過采樣模式(0=16 倍,1=8 倍)。

5. 控制寄存器 2(USART_CR2)

控制寄存器 2 主要用于配置停止位、LIN 模式等。

主要位功能
名稱功能
13:12STOP停止位設置:
00=1 位,01=0.5 位,10=2 位,11=1.5 位。
6LINENLIN 模式使能(1 = 使能)。
0CLKENSCLK 引腳使能(用于同步模式)。

6. 控制寄存器 3(USART_CR3)

控制寄存器 3 用于配置高級功能,如硬件流控制、DMA 等。

主要位功能
名稱功能
14ONEBIT采樣方法(0=3 采樣位,1=1 采樣位)。
11CTSECTS 硬件流控制使能(1 = 使能)。
10RTSERTS 硬件流控制使能(1 = 使能)。
7DMAT發送 DMA 使能(1 = 使能)。
6DMAR接收 DMA 使能(1 = 使能)。

7. 中斷和狀態寄存器(USART_ISR)

在 STM32F4 及更高系列中,ISR替代了SR寄存器,功能類似但增加了更多狀態位,如忙標志(BUSY)。

寄存器操作示例

1. 初始化 UART(115200 波特率,8N1)
// 假設fPCLK=84MHz
USART1->BRR = 0x2D9;         // 設置波特率為115200
USART1->CR1 = USART_CR1_TE | // 使能發送USART_CR1_RE | // 使能接收USART_CR1_UE;  // 使能UART
USART1->CR2 = 0;             // 1個停止位
USART1->CR3 = 0;             // 禁用硬件流控制
2. 發送單個字符
while (!(USART1->SR & USART_SR_TXE)); // 等待發送緩沖區為空
USART1->DR = 'A';                     // 發送字符'A'
3. 接收單個字符
while (!(USART1->SR & USART_SR_RXNE)); // 等待接收緩沖區非空
char c = USART1->DR;                   // 讀取接收到的字符
4. 啟用接收中斷
USART1->CR1 |= USART_CR1_RXNEIE; // 使能接收緩沖區非空中斷
NVIC_EnableIRQ(USART1_IRQn);     // 使能USART1中斷

總結

UART 寄存器的核心操作包括:

  1. 初始化:配置波特率(BRR)、字長(CR1.M)、停止位(CR2.STOP)、校驗位(CR1.PCE)。
  2. 發送控制:通過SR.TXESR.TC判斷發送狀態,寫入DR發送數據。
  3. 接收控制:通過SR.RXNE判斷接收狀態,讀取DR獲取數據。
  4. 中斷配置:通過CR1使能各類中斷(如RXNEIETXEIE),并配置 NVIC。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91109.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

寫一個算法對一組值進行歸一化映射,使它們在視覺上有明顯的區分度,尤其在數據集分布不均時仍能體現差異

問題: 有一批數據,都是隨機值范圍是不確定,我需要用這個值來繪制同樣數量圓,不同值他們的圓半徑不同,考慮到數據有時候大小偏差不大,這1000個值有可能是集中在10,20之間,也可能是分布廣泛&#…

具身智能零碎知識點(五):VAE中對使用KL散度的理解

VAE中對使用KL散度的理解什么是 VAE (Variational AutoEncoder)?從自編碼器 (AE) 說起VAE:讓潛在空間變得“有意義”和“連續”KL 散度是如何用到的?通俗理解 KL 散度在 VAE 中的作用:帶來的好處:KL 散度公式 (無需背誦…

理解:進程、線程、協程

線程、進程和協程是并發編程的重要組成部分。進程(Process)定義進程是操作系統分配資源的基本單位,表示一個正在執行的程序。一旦一個程序被加載到內存中,它就成為一個進程,而每個進程都有其獨立的內存空間。特征進程之…

總結一下找素數的三種方法

目錄 一試除法 二埃氏篩 三線性篩(歐拉篩) 一試除法 思想:就是判斷某個數x是不是素數,就判斷從2開始到小于根號x的范圍內有沒有能夠取余不等于0的,這個說明當前值就是x的一個因子,所以不是素數。 代碼: import java.util.Scanner;public…

基于Yolov8車輛檢測及圖像處理系統【有代碼】

0 引言 隨著城市化進程的加速和機動車保有量的快速增長,交通管理、智能監控和自動駕駛等領域對車輛目標檢測技術的需求日益增長。車輛目標檢測是計算機視覺領域的一個重要研究方向,其目標是從圖像或視頻序列中準確識別和定位車輛,為后續的車輛跟蹤、行為分析和交通流量統計…

MySQL密碼管理器“mysql_config_editor“

目錄 核心能力 常用命令速查 為什么更安全? 典型場景 mysql_config_editor 是 MySQL 官方自帶的一款命令行小工具,作用一句話:把賬號、密碼、主機、端口等連接信息加密存起來,下次連接時只敲一個名字即可,不用再寫…

Kubernetes高級調度01

目錄 第一章:初始化容器(InitContainer)—— 應用啟動前的 “準備軍” 1.1 InitContainer 的基本概念與核心特性 1.2 InitContainer 與普通容器的關鍵區別 1.3 InitContainer 的實戰場景與示例解析 1.3.1 示例 1:延遲啟動 —…

LSV負載均衡

什么是訪問壓力?--負載 兩個客戶同時訪問一個服務器,會導致服務器崩潰調度---Cluster集群(為了解決一個特定問題,多臺服務器組合使用形成的一個系統)LSV 1、集群Cluster LB:負載均衡,有多個主機…

復習筆記 38

緒論 其實沒有一種安穩快樂,永遠也不差 專題 2 知識點 繼續學數學強化吧?可以。還有概率論要學。還有高數后半部分的數一專項要學。還有政治要學。要學的內容確實還是挺多的啊。加油。下載了一個閱讀的軟件,可以做一做真題的閱讀理解。政治英…

GaussDB like 的用法

1 like 作用在 where 子句中使用 like 運算符來搜索列中的指定模式。 有兩個通配符與 like 運算符一起使用:% - 百分號表示零個,一個或多個字符 _ - 下劃線表示單個字符注:也同時支持正則表達式。2 like 語法select column1, colu…

單例模式:確保全局唯一實例

單例模式確保一個類只有一個實例,并提供全局訪問點。適用于需要全局唯一對象的場景(如配置管理器、數據庫連接池)。代碼示例:import java.util.stream.IntStream;public class ConfigManager {public static void main(String[] a…

深入理解 QSettings:Qt 中的應用程序配置管理

在開發 Qt 應用程序時,管理應用程序的配置信息是一個常見的需求。無論是保存用戶的偏好設置、窗口大小,還是應用程序的運行時配置,都需要一種高效且靈活的方式來存儲和檢索這些信息。Qt 提供了一個強大的工具——QSettings,它能夠…

基于SpringBoot+Vue的體育館預約管理系統(支付寶沙盒支付、騰訊地圖API、協同過濾算法、可視化配置、可視化預約)

“ 🎈系統亮點:支付寶沙盒支付、騰訊地圖API、協同過濾算法、可視化配置、可視化預約”01系統開發工具與環境搭建—前后端分離架構 項目架構:B/S架構 運行環境:win10/win11、jdk17前端: 技術:框架Vue.js&am…

<script>標簽對HTML文件解析過程的影響以及async和defer屬性的應用

在前端開發中&#xff0c;<script> 標簽的 async 和 defer 屬性會顯著影響 JavaScript 腳本的加載和執行時機。下面結合示例代碼&#xff0c;詳細解析它們之間的區別&#xff1a; 1. 默認情況&#xff08;無 async/defer&#xff09; <script src"script.js"…

Vue.js:從 Web 到桌面的跨端實踐與技術選型指南

一、Vue.js 的核心能力邊界 作為漸進式 JavaScript 框架,Vue.js 的核心價值在于構建現代 Web 用戶界面: ? 前端核心場景:單頁應用(SPA)、動態交互界面、可復用組件開發 ? 架構限制:無法直接改造 B/S(瀏覽器/服務器)為 C/S(客戶端/服務器)架構 關鍵差異:B/S 依賴瀏…

SSRF11 各種限制繞過之DNS rebinding 繞過內網 ip 限制

ssrf漏洞在廠商的處理下可能進行一些特殊處理導致我們無法直接利用漏洞 有以下四種&#xff1a; 1.ip地址限制繞過 2.域名限制繞過 3.30x跳轉繞過域名限制 4.DNS rebinding繞過內網ip限制 本章我們講DNS rebinding 繞過內網 ip 限制 DNS rebinding 繞過內網 ip 限制 假…

FreeRTOS之鏈表操作相關接口

FreeRTOS之鏈表操作相關接口1 FreeRTOS源碼下載地址2 任務控制塊TCB2.1 任務控制塊TCB2.1.1 任務控制塊的關鍵成員2.1.2 TCB 的核心作用2.2 ListItem_t2.3 List_t3 函數接口3.1 vListInitialise3.2 vListInitialiseItem1 FreeRTOS源碼下載地址 https://www.freertos.org/ 2 …

項目一第一天

目錄 總結MySQL&#xff1a; 最終還是得按照SQL的語法來實施。 1、MySQL的數據類型&#xff1a;指業務數據按照什么格式存儲在數據庫中的。 任何數據類型最常見的三種&#xff1a;字符串、整型和小數型。 如&#xff1a;寶貝計劃這種存在視頻的項目&#xff0c;你們的視頻是存放…

STM32第二十天 ESP8266-01S和電腦實現串口通信(3)

1&#xff1a;透傳透傳&#xff08;又稱透明傳輸&#xff09;是一種通信模式&#xff0c;其核心特點是&#xff1a;通信設備對傳輸的數據不做任何解析或處理&#xff0c;僅作為“管道”原封不動地轉發數據&#xff0c;仿佛數據“透明”地穿過設備。透傳的本質關鍵特征說明無協議…

微服務引擎 MSE 及云原生 API 網關 2025 年 3 月產品動態

點擊此處&#xff0c;了解微服務引擎 MSE 產品詳情。