STM32F4_USART配置及細節描述

Ⅰ、概述

關于USART串口通信,可以說是MCU的標配。不管是在實際項目應用中,還是在開發過程中,它都起著很重要的作用。

在項目應用中我們常常使用UART串口進行通信,根據通信的距離及穩定性,還選擇添加RS232、RS485等對UART數據進行轉換。

?

在開發過程中,我們常常用它來打印調試信息,我們購買的開發板基本上都有一個UART通信接口(DB9的接頭),這個接口主要的一個作用就是用來開發時調試使用。

本文主要針對STM32初學者,使用STM32F4標準外設庫、Keil集成IDE,對STM32F4的USART進行配置及描述。1.詳細描述使用自定義打印數據、自定義中斷接收數據;2.重定義打印數據printf

?

關于本文的更多詳情請往下看(微信請點擊“閱讀原文”查看更多鏈接內容)。

?

Ⅱ、實例工程下載

筆者針對于初學者提供的例程都是去掉了許多不必要的功能,精簡了官方的代碼,對初學者一看就明白,以簡單明了的工程供大家學習。

筆者提供的實例工程都是在板子上經過多次測試并沒有問題才上傳至360云盤,歡迎下載測試、參照學習。

?

提供下載的軟件工程是STM32F417的,但F4其他型號也適用(在工程中修改一下型號就行)。

?

360云盤下載地址:

https://yunpan.cn/cBQiZXDsvacwV??訪問密碼?a98e

?

STM32F4資料:

https://yunpan.cn/cR2pxqF5x2d9c??訪問密碼?53e7

?

Ⅲ、USART初始化描述

筆者以F4標準外設庫(同時也建議初學者使用官方的標準外設庫)為例來描述一下USART的初始化。

USART的初始化大致分三個部分:

?

1.USART時鐘

該函數位于bsp.c文件下面;

?

重點注意:

A.USART時鐘的配置要在USART其他配置(USART初始化、中斷等)前面;

?

B.匹配對應時鐘。

比如:RCC_APB2外設不要配置在RCC_APB1時鐘里面

【如:RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);這樣能編譯通過,但這是錯誤的代碼】

?

2.USART引腳配置

該函數位于usart.c文件下面;

?

注意:

A.GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);

??GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);

引腳配置中,引腳功能復用的配置比較重要,很多從F1轉型到F4的朋友往往會忽略掉這一點(F1中沒有這個配置選項)。

?

B.GPIO_InitStructure.GPIO_Mode =?GPIO_Mode_AF;

這里配置為復用模式。

?

3.USART參數配置

該函數位于usart.c文件下面;

?

A.USART波特率:

對于STM32來說,波特率可根據用戶自定義,也就是數值隨便用戶設定(但需要主要范圍和誤差值)。

關鍵的一點:它不受系統使用的變化而受影響(這就是使用標準外設庫的好處),也就是說它自適應系統時鐘。

?

B.USART模式:

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

提供實例是收發模式都有,但提醒一下,有些朋友從一個地方拷貝代碼自己的工程就要注意,如果你使用了接收的功能,拷貝過來的代碼沒有配置接收,那就有問題。【在實際開發中有人遇見過這類問題】

?

C.中斷配置

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

中斷功能也是在應用中比較常用的一個功能,特別是接收中斷。如果使用的USART中斷,這個函數就需要配置,發送中斷不常見,如果沒有發送中斷的要求就不需要配置發送功能。

?

Ⅳ、USART重定義(打印數據)

相信來學習該文章知識的朋友(都應該學習過C語言知識)都應該知道打印數據printf這個函數。但是,很多初學者可能不理解怎樣才能實現printf這種打印方式,其實只需要簡單的兩步步驟就能實現printf這個函數。這一節就是關于描述使用USART來重定義打印數據。

?

1.使用微庫

project -> Options for Target -> Target窗口下勾選上”Use MircoLIB”使用微庫。

由于printf函數是標準的函數,這里我們就直接使用標準的“微庫”,而不自己設計該函數的功能。

?

2.重定義函數

#include <stdio.h>

首先要包含頭文件”stdio.h”, 提供的實例工程位于usart.h文件下面。

該函數位于usart.c文件下面;

?

我們使用printf函數,需要重定義fputc函數。

?

經過上面兩步驟,我們就可以實現printf函數打印輸出UART數據了。

?

Ⅴ、USART自定義(打印數據)

該函數位于usart.c文件下面;

?

我們自定義的打印函數功能就比較簡單,計算字符串個數。

?

Ⅵ、USART中斷接收

接收數據可以查詢接收,也可以中斷接收;查詢的效率比較低,我們實例提供的是中斷接收的方式,實現的效果的接收到一個數據,就將其發送出去。

?

中斷接收需要配置幾個地方:

1.使能中斷

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

這個函數位于USART初始化里面,主要是使能USART中斷。

?

2.配置NVIC

該函數位于bsp.c文件下面;

配置NVIC通道和優先級。

?

3.USART接收中斷

該函數位于stm32f4xx_it.c文件下面;

主要是中斷接收和處理,效果就是:有中斷就發送接收的數據。

?

?

Ⅶ、說明

關于筆者提供的軟件工程實例,可關注微信,在會話框回復“關于工程”,有關于工程結構描述、型號修改等講述。

?

以上總結僅供參考,若有不對之處,敬請諒解。

?

Ⅷ、最后

更多精彩文章我講第一時間在微信公眾號里面分享。

本著免費分享的原則,方便大家手機學習知識,定期在微信平臺分享技術知識。如果你覺得分享的內容對你有用,又想了解更多相關的文章,請用微信搜索“EmbeddDeveloper” 或者掃描下面二維碼、關注,將有更多精彩內容等著你。

?

轉載于:https://www.cnblogs.com/strongerHuang/p/5643498.html

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

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

相關文章

騰訊面試:SaaS多租戶,如何設計?

尼恩說在前面 在40歲老架構師 尼恩的讀者交流群(50)中&#xff0c;最近有小伙伴拿到了一線互聯網企業網易、美團、字節、如阿里、滴滴、極兔、有贊、希音、百度、美團的面試資格&#xff0c;遇到很多很重要的面試題&#xff1a; 多租戶設計&#xff0c;如何 技術選型&#xff…

Mac中Finder是什么?怎么打開?

很多人都知道windows系統中的資源管理器&#xff0c;不過不知道什么是finder。finder和資源管理器一樣&#xff0c;都是用來管理文件&#xff0c;finder存在于mac統中&#xff0c;那么finder有什么作用呢?下面下班就為大家分享關于mac系統中finder的相關內容。   1、怎么打開…

phpstudy頁面不存在_網站的404頁面對于SEO的重要作用

隨著網站建設的需求和要求越來越多&#xff0c;網站的新形式也逐漸成為人們改版的方向&#xff0c;但是在網站的改版中難免會出現一些小差錯&#xff0c;導致網站的運行不順暢&#xff0c;這很有可能就是網站建設中忘記設計404頁面&#xff0c;那么4040頁面能給網站帶來哪些好處…

ajax類型的區別,ajax請求的類型 有post get 請問兩種有何區別?

1、 get是把參數數據隊列加到提交表單的ACTION屬性所指的URL中&#xff0c;值和表單內各個字段一一對應&#xff0c;在URL中可以看到。post是通過HTTP post機制&#xff0c;將表單內各個字段與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程…

計算機系統基礎:虛擬存儲管理知識筆記

1、虛擬存儲管理概念 一個計算機任務只需要部分裝入主存便可以啟動運行&#xff0c;其余部分留在磁盤上&#xff0c;在需要的時候裝入主存&#xff0c;這樣可以提高主存空間的利用率。這樣該系統所具有的主存容量會比實際主存容量大很多&#xff0c;這樣的存儲器稱為虛擬存儲器…

lamba把逗號拼接的字符串轉為list

List<Long> detailIds Arrays.stream(settlementDetailIds.split(",")).map(s -> Long.parseLong(s.trim())).collect(Collectors.toList());

git推送指令配置_git 常用命令

git 簡介在實際開發中&#xff0c;會使用git作為版本控制工具來完成團隊協作。因此&#xff0c;對基本的git操作指令進行總結是十分有必要的&#xff0c;本文對一些術語或者理論基礎&#xff0c;不重新碼字&#xff0c;可以參考廖雪峰老師的博文&#xff0c;本文只對命令做歸納…

Ubuntu 配置swftools(Ubuntu14.04)

1.下載文件 wget http://swftools.org/swftools-0.9.0.tar.gz tar -zvxf swftools-0.9.0.tar.gz wget http://www.ijg.org/files/jpegsrc.v7.tar.gz tar -zvxf jpegsrc.v7.tar.gz wget http://download.savannah.gnu.org/releases-noredirect/freetype/freetype-2.3.12.tar.gz …

傳統的線性降維方法效果不佳。_機器學習西瓜書簡明筆記(11)降維與度量學習...

上篇主要介紹了幾種常用的聚類算法&#xff0c;首先從距離度量與性能評估出發&#xff0c;列舉了常見的距離計算公式與聚類評價指標&#xff0c;接著分別討論了K-Means、LVQ、高斯混合聚類、密度聚類以及層次聚類算法。K-Means與LVQ都試圖以類簇中心作為原型指導聚類&#xff0…

計算機系統基礎:設備管理知識筆記

1、設備管理介紹 設備管理主要包括設備分配、緩沖區管理、實際物理I/O設備操作、通過管理提高設備利用率和方便用戶使用的目的。 設備屬于計算機系統和外界交互的工具&#xff0c;不要負責計算機和外部的輸入/輸出工作&#xff0c;通常稱為外設。 2、設備分類 2.1 按數據組織分…

灌籃高手微信登錄是什么服務器,灌籃高手微信登錄版本

這款《灌籃高手》手游游戲是由同名的火爆動漫改寫而成的&#xff0c;里邊的游戲角色都是有極致的復原和保存&#xff0c;足球運動員特點都是有一定的展現。也有經典的動漫故事情節和每個高等院校足球隊的復原。現階段為大伙兒出示的是灌籃高手微信登錄版本&#xff0c;能夠和小…

寫代碼時注意的幾點

一.規范性 書寫清晰布局清晰命名合理命名盡量使用有意義的單詞; 變量常用i,j,k命名&#xff1b; 函數常用f,h,g命名。 二.完整性 完成基本功能考慮邊界條件 做好錯誤處理對應的考慮好三個測試 功能性測試 邊界測試 容錯測試 三.魯棒性 采取防御式編程 處理無效的輸入 轉載于:…

華為發布岳云鵬手機_剛剛,華為發布鴻蒙2.0!手機可用!

不凡的2020年激動人心的時刻終于到來今天下午3時華為開發者大會2020在正式開幕鴻蒙2.0發布&#xff01;本次大會包含主題演講、技術論壇、松湖對話、Codelabs、Teach.Hour、互動體驗等系列環節&#xff0c;大會將持續3天&#xff0c;眾多活動也將于線上同步直播。技術論壇環節在…

Mac下安裝jdk8

直接點擊dmg文件 安裝成功 在終端輸入 Java -vesion 提供百度云鏈接方便大家下載 鏈接: https://pan.baidu.com/s/1n2SY-61KFb6-c1UcshZt1Q 鏈接: https://pan.baidu.com/s/1n2SY-61KFb6-c1UcshZt1Q 密碼: g0mj

硬件基礎:嵌入式物聯網系統軟硬件基礎知識大全

本文主要介紹嵌入式系統的基礎知識&#xff0c;涉及嵌入式軟件和硬件的方方面面&#xff0c;希望對各位有幫助。嵌入式系統基礎1、嵌入式系統的定義&#xff08;1&#xff09;定義&#xff1a;以應用為中心&#xff0c;以計算機技術為基礎&#xff0c;軟硬件可裁剪&#xff0c;…

ctrl z撤銷后如何恢復_回收站清空后數據如何恢復?

回收站清空后數據如何恢復&#xff1f;怎么恢復回收站誤刪除文件&#xff1f;很多人為了電腦的更好運行以及其它的原因&#xff0c;都會定期清理一下桌面的回收站里的文件&#xff0c;有時候會一鍵清空&#xff0c;可能是想全部刪除又或者是想特定刪除一些而不小心全清理了&…

云上城之個服務器維護時間,云上城之歌寒冬邊界開服時間表_云上城之歌新區開服預告_第一手游網手游開服表...

今日開服15:00三十八區蒼炎之門已經開服2021-08-1010:00三十八區巨石林野已經開服2021-08-0915:00三十八區熒光要塞已經開服10:00三十八區雷神圣所已經開服2021-08-0710:00三十八區萬華天街已經開服2021-08-0615:00三十八區不朽要塞已經開服2021-08-0515:00三十八區圣靈古域已經…

java中成員變量和局部變量的區別

成員變量和局部變量的區別 (1)在類中的位置不同 成員變量&#xff1a;類中方法外 局部變量&#xff1a;在方法或者代碼塊中&#xff0c;或者方法的聲明上&#xff08;即在參數列表中&#xff09; (2)在內存中的位置不同 成員變量&#xff1a;在…

jh鋰電保護電路_鋰電池過充電、過放電、過流及短路保護電路原理及電路圖

下圖為一個典型的鋰離子電池保護電路原理圖。該保護回路由兩個MOSFET(V1、V2)和一個控制IC(N1)外加一些阻容元件構成。控制IC負責監測 電池電壓與回路電流&#xff0c;并控制兩個MOSFET的柵極&#xff0c;MOSFET在電路中起開關作用&#xff0c;分別控制著充電回路與放電回路的導…

一個串口接2個設備_重慶市有2個大觀鎮,一個鄉村旅游發達,一個特產柚子

同名的鄉鎮是很常見的現象&#xff0c;就連一個市里就有很多同名的鄉鎮&#xff0c;在之前的文章里說過&#xff0c;重慶市有2個臨江鎮、2個義和鎮等。今天繼續看看&#xff0c;重慶市內兩個同名鄉鎮——大觀鎮&#xff0c;一個屬于南川區&#xff0c;一個屬于梁平區&#xff0…