STM32 內置的通訊協議

?

數據是以幀為單位發的?

?

?USART和UART的區別就是有沒有同步功能

同步是兩端設備有時鐘連接,異步是沒時鐘連接,靠約定號的頻率(波特率)接收發送數據?

RTS和CTS是用來給外界發送已“可接收”或“可發送”信號的,一般用不到?,只用到TX 和 RX

從輸入引腳看框圖

編解碼模塊是把電平信號轉換為數字信號的,軟件只可操控DR寄存器

結構簡圖:

雖然有TDR,RDR兩個硬件層面的寄存器,但是軟件層面只有一個寄存器DR(F1系列),只不過讀和寫通向不同的寄存器

了解即可以下內容{

串口只需要看紅色圈住的部分:

數據采樣看8,9,10里有多少個1多少個0,如果全為0就是0,,2個0,1個1還是0,但是NE標志位會被置一??

?}到此

采樣率 = f(pclk2/1) / DIV

(f(pclk2/1)PCB2/PCB1的時鐘信號具體看手冊上USART1和USARTx有可能不一樣)

波特率 = 采樣率 / 16?

用戶給出波特率,算出DIV,然后整數部分寫入DIV_Mantissa,小數部分寫入DIV_Fraction(小數部分需要*16后再+0.5)(乘16相當于左移4位,+0.5是為了四舍五入)

即可完成波特率的設置(USART_BRR波特比率寄存器)

?U(S)ART寄存器

控制寄存器CR1

控制寄存器CR2

基本上只用到位13和12(配置為00即可)

控制寄存器CR3

用到位3

?數據寄存器DR

?狀態寄存器CR

TXE(發送寄存器為空標志位,可產生中斷)可產生中斷去寫DR寄存器

TC(發送完成(發送寄存器和發送移位寄存器都空)標志位)

RXNE(讀數據寄存器非空(收到了數據)標志位,可產生中斷去讀DR寄存器)

?HAL庫的MSP回調機制

(其實就是把外設初始化寫在mspinit函數里而已)

?例

要其他外設的話直接加就可以

PPP改成你要的外設名(找到指定函數)

HAL_UART_Init會自動調用MSPInit

?HAL共用中斷處理函數 and 中斷回調函數

?其實都是一樣的

?USART異步通信配置步驟

需要用到的1,3,6

?HAL_UART_Init()函數原型:

UART_HandleTypeDef是句柄(其實就是結構體里套結構體,標準庫是只有一個結構體的)

?一般只用到前兩個,Init又是一個結構體

?Init結構體成員

用法例:

信號空閑時要上拉?

中斷函數

usart1_rx_buf的大小在文件開頭宏定義為128了,可以修改,有兩個方法進這個中斷,一個是接收到數據,一個是數據接收完了。

HAL_UART_Receive 會自動清除接收標志位RXNE 標志)

該函數可以讀取數據到用戶指定的變量中

剩余的函數及宏:?

?

?

?問題1:STM32初始化USART時,要使能USART時鐘和GPIO時鐘,為什么,不是使能USART就可以了嗎

答:

在 STM32 初始化 USART 時,除了使能 USART 外,還需要使能 GPIO 時鐘,原因如下:

  1. USART 需要 GPIO 引腳進行數據傳輸

    • USART 的 TX(傳輸)和 RX(接收)引腳通常映射到 GPIO 端口。例如,在 STM32F103 上,USART1 的 TX 可以是 PA9,RX 可以是 PA10
    • 這些 GPIO 引腳默認是普通 I/O 模式,必須配置為 復用功能(AF),以使 USART 硬件能夠控制它們。
  2. GPIO 時鐘與復用功能的關系

    • GPIO 端口是獨立的外設,受 RCC(時鐘控制)管理。
    • 復用功能(AF)是 GPIO 的一部分,它需要 GPIO 時鐘處于打開狀態,否則 USART 無法正確驅動 TX/RX 引腳。
  3. USART 只管理數據,不管理引腳

    • USART 外設負責數據的收發,但它不會直接控制 GPIO 時鐘。
    • GPIO 需要通過 RCC 使能時鐘后,才能配置為 USART 復用模式。

IO引腳復用功能和重映射

同一時間一個IO口只能用一種功能

重映射:

TIM1_CH1默認在PA8引腳

但是如果PA8已經被用作其他功能,那TIM1_CH1就用不了了,此時就要用到重映射了

可以看到TIM1_CH1可以重映射到PE9上?

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

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

相關文章

ES 使用geo point 查詢離目標地址最近的數據

需求描述:項目中需要通過經緯度坐標查詢目標地所在的行政區。 解決思路大致有種,使用es和mysql分別查詢。 1、使用es進行查詢 將帶有經緯度坐標的省市區數據存入es中,mappings字段使用geo point類型,索引及查詢dsl如下。 geo p…

Appium等待機制--強制等待、隱式等待、顯式等待

書接上回,Appium高級操作--其他操作-CSDN博客文章瀏覽閱讀182次,點贊6次,收藏7次。書接上回Appium高級操作--從源碼角度解析--模擬復雜手勢操作-CSDN博客。https://blog.csdn.net/fantasy_4/article/details/146162851主要講解了Appium的一些…

【架構藝術】Go語言微服務monorepo的代碼架構設計

近期因為項目架構升級原因,筆者著手調研一些go項目monorepo的代碼架構設計,目標是長期把既有微服務項目重要的部分都轉移到monorepo上面,讓代碼更容易維護,協作開發更加方便。雖然經驗不多,但既然有了初步的調研&#…

深入解析 JVM —— 從基礎概念到實戰調優的全鏈路學習指南

文章目錄 一、為什么要學習 JVM?1. 面試必備與技能提升2. 性能優化與問題診斷3. 編寫高質量代碼 二、JVM 基礎概念與體系結構1. JVM 簡介2. JDK、JRE 與 JVM 三、JVM 內存模型1. 線程私有區2. 線程共享區 四、類加載機制與雙親委派1. 類加載過程2. 雙親委派模型3. 動…

前端及后端實現csv文件下載功能

方法一、 前端內容: const url window.URL.createObjectURL(new Blob([res.data])); const link document.createElement(a); link.href url; const fileNameDateTime getFormattedDateTime(); const filename "用戶提現列表"fileNameDateTime.csv…

QT中委托QStyledItemDelegate的使用

目錄 一、子類化委托 二、委托方法實現 1)createEditor 2)setEditorData 3)setModelData 4)updateEditorGeometry 三、委托使用 四、總結 Qt的數據容器控件采用模型/視圖(model/view)架構設計。模型用于存放控件的數據,視圖則用于顯示編輯數據,而委托則是…

OpenCV實現視頻背景提取

在計算機視覺領域,背景減除(Background Subtraction)是一種常用的技術,用于從視頻序列中提取前景對象。 背景減除的核心思想是通過建模背景,然后將當前幀與背景模型進行比較,從而分離出前景對象。 OpenCV…

NFS實驗配置筆記

NFS NFS服務 nfs,最早是Sun這家公司所發展出來的,它最大的功能就是可以透過網絡,讓不同的機器,不同的操作系統,進行實現文檔的共享。所以你可以簡單的將他看做是文件服務器。 實驗準備 ①先準備一個服務器端的操作…

C語言【數據結構】:理解什么是數據結構和算法(啟航)

引言 啟航篇,理解什么是數據結構和算法 在 C 語言編程領域,數據結構和算法是兩個核心且緊密相關的概念 一、數據結構 定義 數據結構是指相互之間存在一種或多種特定關系的數據元素的集合(比如數組),它是組織和存儲數…

Vue.js 3 的設計思路:從聲明式UI到高效渲染機制

目錄 一、聲明式UI與虛擬DOM的靈活性 二、渲染器:虛擬DOM到真實DOM的橋梁 三、組件的本質與實現 四、編譯與運行時的協同優化 五、性能與可維護性的權衡 總結 Vue.js 3 作為新一代前端框架,其設計理念在聲明式UI描述、虛擬DOM優化、組件化架構…

深度學習|MAE技術全景圖:自監督學習的“掩碼魔法“如何重塑AI基礎

一、引言:深度學習的困境與自監督的曙光 深度學習(Deep Learning)無疑是當今人工智能領域基礎中的基礎。從圖像識別到自然語言處理(NLP),它在無數任務中展現了卓越性能。例如,在安防監控中&…

深度學習正則化技術之權重衰減法、暫退法(通俗易懂版)

一、影響模型泛性的因素有?什么是正則化技術?有什么用? 通常,影響模型泛化能力的因素有: 可調節參數的個數:可調節的參數過少,會造成模型過于簡單,欠擬合;過多&#xf…

爬蟲逆向:Unicorn 詳細使用指南

文章目錄 1. Unicorn 介紹1.1 Unicorn 的特點1.2 Unicorn功能2. 安裝 Unicorn2.1 安裝 Python 綁定2.2 安裝 Unicorn 核心庫3. Unicorn 的基本使用3.1 初始化模擬器3.2 映射內存3.3 寫入代碼3.4 設置寄存器3.5 執行代碼3.6 讀取寄存器4. Unicorn 的高級功能4.1 鉤子函數4.2 異常…

【SpringBoot】實現登錄功能

在上一篇博客中,我們講解了注冊頁面的實現。在此基礎上會跳轉到登錄頁面,今天給大家帶來的是使用 SpringBoot,MyBatis,Html,CSS,JavaScript,前后端交互實現一個登錄功能。 目錄 一、效果 二、…

【小白向】Ubuntu|VMware 新建虛擬機后打開 SSH 服務、在主機上安裝vscode并連接、配置 git 的 ssh

常常有人問VMware-Tools裝了也復制粘貼不了怎么辦,這個東西影響因素太多了,具體解決辦法你們可以參考一下:【經驗】VMware|虛擬機只能使用鼠標無法使用鍵盤、裝不了或裝了VMware-Tools無法復制粘貼的可能解決辦法_增強型鍵盤驅動程…

mingw工具源碼編譯

ming-w64 mingw編譯生成的庫,需要mingw的lib文件支持。 https://github.com/mingw-w64/mingw-w64 使用msys2的bash git checkout v8.0.3 ./configure --disable-dependency-tracking --targetx86_64-w64-mingw32 mingw32-make.exe -j4 修改makefile中的make 改成mi…

LSTM方法實踐——基于LSTM的汽車銷量時序建模與預測分析

Hi,大家好,我是半畝花海。本實驗基于汽車銷量時序數據,使用LSTM網絡(長短期記憶網絡)構建時間序列預測模型。通過數據預處理、模型訓練與評估等完整流程,驗證LSTM在短期時序預測中的有效性。 目錄 一、實驗…

Stable Diffusion教程|快速入門SD繪畫原理與安裝

什么是Stable Diffusion,什么是煉丹師?根據市場研究機構預測,到2025年全球AI繪畫市場規模將達到100億美元,其中Stable Diffusion(簡稱SD)作為一種先進的圖像生成技術之一,市場份額也在不斷增長&…

Webpack構建流程詳解優化前端性能\Dev-Server與Proxy\網絡攻擊\HMR

簡版 核心流程圖 根據,Webpack的構建流程分為初始化、編譯和輸出三個階段。初始化階段讀取配置、加載插件、實例化Compiler。編譯階段(構建依賴關系)涉及Compiler類的運行,生成Compilation對象,處理模塊依賴。輸出階…

《Transformer如何進行圖像分類:從新手到入門》

引言 如果你對人工智能(AI)或深度學習(Deep Learning)感興趣,可能聽說過“Transformer”這個詞。它最初在自然語言處理(NLP)領域大放異彩,比如在翻譯、聊天機器人和文本生成中表現出…