STM32G473串口通信-USART/UART配置和清除串口寄存器狀態的注意事項

USART和UART配置的區別

如果USART使用的是異步通信,那么UART與USART配置基本相同。

USART配置如下:
在這里插入圖片描述

UART配置如下:

如果USART使用的是同步通信,那么UART配置就有差異。

  1. 首先通信雙方都是使用USART的同步通信,一個主機,一個從機。

  2. USART同步通信使用的結構體就不一樣
    USART使用同步通信的結構體為:

    在這里插入圖片描述
    USART異同通信使用的結構體
    在這里插入圖片描述
    在這里插入圖片描述

  3. 從結構體中就可以看出二者的差別,那么不同的地方怎么配置呢?這個問題我想就必須要看用戶手冊了,因為官方好像沒有給出例程。
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

  4. 從官方用戶手冊的文件描述可以看出,配置為主機模式的步驟和說明
    在這里插入圖片描述

  5. 從官方用戶手冊的文件描述可以看出,配置為從機模式的步驟和說明

在這里插入圖片描述

  1. 文檔中說操作對應寄存器的位,但是官方的函數中沒有提供對應的函數,我們可以這樣做:
    這里以USART1為例,配置主機模式,從機模式類似就不做過多的說明。
    在這里插入圖片描述
    寄存器對應位的配置一定要看用戶手冊,否則容易出問題,比如CR3寄存器的HDSEL位就有如下要求:
    在這里插入圖片描述
    注意:我上面的配置不一定能夠成功,我沒有測試過。為什么沒有測試,因為我只有一塊這樣的板。尷尬!

清除串口寄存器位的注意事項

清除串口狀態寄存器ISR的位,還是之前的那句話"一定要看用戶手冊",當然如果是調用官方的庫函數,當我沒說。如果是自己編寫的函數來清除對應的狀態位,就一定要看用戶手冊。

比如我需要清除ISR寄存器的ORE位(下圖中已經明確了,只能讀),如果是按照經驗可能會這樣操作
在這里插入圖片描述

在這里插入圖片描述
但是當我們閱讀用戶手冊對該寄存器對應位的描述時,就會發現問題所在,如下圖。
在這里插入圖片描述
根據用戶手冊中的描述清楚ISR寄存器的ORE位的操作為:
在這里插入圖片描述

使用官方庫函數進行清楚ISR對應位

下圖就是官方的庫函數,用以清除狀態。從官方的庫函數中也可以看出使用的ICR寄存器。

  • HANDLE:就是USART_HandleTypeDef結構體定義的husart1
  • FLAG:就是要清楚的狀態位,官方的庫函數的描述中有給出哪些狀態可以被該函數清除。

在這里插入圖片描述

從上面的也可以看出官方宏定義的與官方的用戶手冊寄存器是相關的(命名等),特別是對應寄存器的位。

當然看英文文檔是非常痛苦的一件事情,但是痛就痛吧,無所畏懼。

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

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

相關文章

Debezium:一款基于CDC的開源數據同步工具

Debezium 是由 Red Hat 開源的一種基于變更數據捕獲(CDC) 的分布式平臺,專為實時捕獲和傳播數據庫的變更事件而設計。Debezium 常見的使用場景包括: 實時數據集成:將數據庫變更同步到數據倉庫或數據湖,支撐…

從面向對象編程語言PHP轉到Go時的一些疑惑?

前言 1、php中面向對象編程時 與 Go中的區別? 2、php中最常使用laravel框架,不用過多關注依賴注入和反射,在go中又該如何使用呢?是 舍棄? 本文是一個系統化梳理,幫助從 語言哲學 → 依賴注入在 Go 的現狀 →…

Vue3中使用konva插件動態制作海報以及可在畫布上隨意移動位置

1、下載konva插件 官網地址 npm install vue-konva konva --save2、在主文件中引入,如main.js import VueKonva from vue-konva; app.use(VueKonva);3、組件內使用,我現在的布局是左側是畫布,右側是相關設置(顏色、標題等&#…

政安晨【開源人工智能硬件】【ESP樂鑫篇】 —— 在macOS上部署工具開發環境(小資的非開發者用蘋果系統也可以玩樂鑫)

政安晨的個人主頁:政安晨 歡迎 👍點贊?評論?收藏 希望政安晨的博客能夠對您有所裨益,如有不足之處,歡迎在評論區提出指正! 前言 開源人工智能硬件會給你帶來無限可能,玩開源硬件,環境和工具少…

Vue3 學習教程,從入門到精通,vue3學習中的JavaScript ES6 特性詳解與案例(5)

vue3學習中的JavaScript ES6 特性詳解與案例 ES6(ECMAScript 2015)是 JavaScript 的一個重要版本,引入了許多新特性,極大地提升了語言的表達能力和開發效率。本文將詳細介紹 ES6 的主要特性,包括 let 和 const 命令、變…

深度學習模型1:理解LSTM和BiLSTM

深度學習模型1:理解LSTM和BiLSTM 因為最近科研復現論文中需要了解單向LSTM和雙向LSTM,所以就學習了一下LSTM的基本原理,下面孬孬帶著大家一起學習一下,感謝大家的一鍵三連 一、RNN 因為談到LSTM,就必不可少的會考慮RNN…

[論文閱讀] 軟件工程 | 一篇關于開源許可證管理的深度綜述

關于開源許可證管理的深度綜述 論文標題:Open Source, Hidden Costs: A Systematic Literature Review on OSS License ManagementarXiv:2507.05270 Open Source, Hidden Costs: A Systematic Literature Review on OSS License Management Boyuan Li, Chengwei Liu…

Qt懸浮動態

粉絲懸浮動態,及抽獎程序#include "masklabel.h"MaskLabel::MaskLabel(int pos_x,QString fans_name,QWidget*parent):QLabel(parent) {this->setAlignment(Qt::AlignHCenter);//設置字體居中this->setStyleSheet("color:white;font-size:20px…

深入拆解Spring思想:DI(依賴注入)

在簡單了解IoC與DI中我們已經了解了DI的基本操作,接下來我們來詳解DI。(IoC詳解請看這里)我們已經知道DI是“你給我,我不用自己創建”的原則。現在我們來看看Spring是如何實現“給”這個動作的,也就是依賴注入的幾種方式。 Spring主要提供了…

Arcgis連接HGDB報錯

文章目錄環境癥狀問題原因解決方案環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:6.0 癥狀 Arcgis連接HGDB報錯: 無法連接到數據庫服務器來檢索數據庫列表;請檢查服務器名稱、用戶名和密碼信息,然后…

Android 應用常見安全問題

背景:OWASP MASVS(Mobile Application Security Verification Standard 移動應用安全驗證標準)是移動應用安全的行業標準。 一、MASVS-STORAGE:存儲 1.1 不當暴露FileProvider目錄 配置不當的 FileProvider 會無意中將文件和目錄暴露給攻擊者…

Netty的內存池機制怎樣設計的?

大家好,我是鋒哥。今天分享關于【Netty的內存池機制怎樣設計的?】面試題。希望對大家有幫助; Netty的內存池機制怎樣設計的? 超硬核AI學習資料,現在永久免費了! Netty的內存池機制是為了提高高并發環境下的內存分配與回收效率…

Python 項目快速部署到 Linux 服務器基礎教程

Linux的開源特性和強大的命令行工具使得部署流程高度自動化,可重復性強。本文將詳細介紹如何從零開始快速部署Python項目到Linux服務器。 Linux系統因其穩定性、安全性和性能優化,成為Python項目部署的首選平臺。無論是使用flask構建Web應用、FastAPI創…

SQL Server通過CLR連接InfluxDB實現異構數據關聯查詢技術指南

一、背景與需求場景 在工業物聯網和金融監控場景中,實時時序數據(InfluxDB)需與業務元數據(SQL Server)聯合分析: 工業場景:設備傳感器每秒采集溫度、振動數據(InfluxDB),需關聯工單狀態、設備型號(SQL Server)金融場景:交易流水時序數據(每秒萬條)需實時匹配客…

機器學習詳解

## 深入解析機器學習:核心概念、方法與未來趨勢機器學習(Machine Learning, ML)作為人工智能的核心分支,正深刻重塑著我們的世界。本文將系統介紹機器學習的基本概念、主要方法、實際應用及未來挑戰,為您提供全面的技術…

汽車間接式網絡管理的概念

在汽車網絡管理中,直接式和間接式管理是兩種用于協調車載電子控制單元(ECUs)之間通信與行為的機制。它們主要用于實現車輛內部不同節點之間的協同工作,特別是在涉及網絡喚醒、休眠、狀態同步等場景中。### 直接式管理直接式網絡管…

npm : 無法加載文件 D:\Node\npm.ps1,因為在此系統上禁止運行腳本。

npm : 無法加載文件 D:\Node\npm.ps1,因為在此系統上禁止運行腳本。 安裝高版本的node.js,可能會導致這個問題, 腳本的權限被限制了,需要你設置用戶權限。 get-ExecutionPolicy set-ExecutionPolicy -Scope CurrentUser remotesig…

搜索算法講解

搜索算法講解 深度優先搜索-DFS P1219 [USACO1.5] 八皇后 Checker Challenge 一個如下的 666 \times 666 的跳棋棋盤,有六個棋子被放置在棋盤上,使得每行、每列有且只有一個,每條對角線(包括兩條主對角線的所有平行線&#xff…

深度學習---Rnn-文本分類

# 導入PyTorch核心庫 import torch # 導入神經網絡模塊 import torch.nn as nn # 導入優化器模塊 import torch.optim as optim # 導入函數式API模塊 import torch.nn.functional as F # 導入數據集和數據加載器 from torch.utils.data import Dataset, DataLoader # 導入NumPy…

20250709解決KickPi的K7開發板rk3576-android14.0-20250217.tar.gz編譯之后刷機啟動不了

【整體替換】 Z:\20250704\rk3576-android14.0\rkbin清理編譯的臨時結果: rootrootrootroot-X99-Turbo:~$ cd 14TB/versions/rk3576-android14.0-20250217k7/ rootrootrootroot-X99-Turbo:~/14TB/versions/rk3576-android14.0-20250217k7$ ll rootrootrootroot-X99-…