當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]Ⅰ、寫在前面學(xué)習(xí)本文之前可以查看我前面的文章:STM32CubeMX介紹、下載與安裝STM32CubeMX使用方法及功能介紹STM32CubeMX新建工程+基本IO配置過程本文接著前面STM32CubeMX文章結(jié)合USART實(shí)例,講述關(guān)于STM32CubeMX新建

Ⅰ、寫在前面

學(xué)習(xí)本文之前可以查看我前面的文章:

STM32CubeMX介紹、下載與安裝

STM32CubeMX使用方法及功能介紹

STM32CubeMX新建工程+基本IO配置過程

本文接著前面STM32CubeMX文章結(jié)合USART實(shí)例,講述關(guān)于STM32CubeMX新建USART工程,以及新建好完成的軟件工程。最終通過STM32CubeMX工具配置完成實(shí)現(xiàn)USART串口通信的軟件工程。

本文使用Keil(MDK-ARM) V5軟件為編譯環(huán)境,如果你沒有安裝最新版本的軟件,請(qǐng)安裝Keil(MDK-ARM) V5版本的軟件,具體過程可以參考我的一篇文章:

MDK-ARM下載與安裝

關(guān)于本文的更多詳情請(qǐng)往下看。

Ⅱ、STM32CubeMX新建USART工程

在上一篇文章簡單講述了基于IO新建一個(gè)工程的步驟,本文基于USART簡單講述一下STM32CubeMX新建UART串口發(fā)送工程。

(我們還是以STM32F103E為例來講述,如果你的板子是STM32其他型號(hào)芯片,在選擇芯片時(shí)對(duì)應(yīng)即可)

1.新建工程基本步驟

STM32CubeMX新建工程前面的基本步驟大致如下幾步(具體請(qǐng)看我上一篇文章):

1.打開STM32CubeMX軟件,點(diǎn)擊“新建工程”

2.選擇MCU 或 選擇(ST官方)開發(fā)板

3.工程配置


2.Pinout配置

這里我們配置IO(定義PF11引腳為LED)、RCC(使用HSE)、USART(串口)。

A.配置PF11引腳為輸出模式

第一步:放大芯片圖標(biāo),找到PF11(可以通過Find查找)


第二步:配置為輸出選中PF11 -> 左鍵 -> 彈出列表 -> 選中“GPIO_Output”


B.配置RCC

PCC配置有三項(xiàng),我們這里只配置HSE高速外部時(shí)鐘,其他兩項(xiàng)LSE外部低速時(shí)鐘、MCO時(shí)鐘輸出默認(rèn)配置。

選擇HSE高速外部時(shí)鐘為“Crystal”,對(duì)應(yīng)的引腳自動(dòng)改變,如下圖:


C.配置USART(串口)

USART的配置有好幾種,本文就以最基礎(chǔ),也是最常見的一種”UART異步串行通信”配置來講述。

選擇USART1模式為“asynchronous”對(duì)應(yīng)的引腳自動(dòng)轉(zhuǎn)換為USART。


3.Clock配置

對(duì)于系統(tǒng)時(shí)鐘應(yīng)該都知道它的作用,就是驅(qū)動(dòng)整個(gè)芯片工作的心臟,如果沒有了它,就等于人沒有了心跳。時(shí)鐘的快慢也就決定了程序的快慢。

STM32的時(shí)鐘樹功能比較強(qiáng)大,分頻、倍頻可以根據(jù)你的需求配置出多種時(shí)鐘。STM32CubeMX這個(gè)工具在這一塊也是做的比較人性化的,可以直觀的看見具體配置,而且有錯(cuò)誤提示(注意:不同型號(hào)芯片的時(shí)鐘樹可能不同,但大同小異),我們配置為HSE,如下圖:


4.“綜合”配置

這里的配置相當(dāng)于初始化一些配置,集齊了前面的引腳對(duì)應(yīng)的初始化配置,所以叫“綜合配置”。

由于我們主要配置了IO 和 USART,所以在這個(gè)選項(xiàng)里面,重點(diǎn)關(guān)心的就是這兩項(xiàng)。

A.IO(PF11)配置



B.USART配置



5.最后生成代碼、編譯下載

這些步驟不是今天的重點(diǎn),詳細(xì)過程可以參看上一篇文章。

生成的原始代碼“STM32CubeMX_USART配置(原始版)”可到我360云盤下載:

https://yunpan.cn/cMPy7AbArtxQ8 訪問密碼 e92f

6.添加代碼

在main.c文件中添加“延時(shí)函數(shù)”:

voidTestDelay(uint32_t cnt)

{

while(cnt--);

}

在主函數(shù)中添加下圖代碼:


添加以上代碼就能實(shí)現(xiàn):間隔(約0.5S)LED亮滅變化一次,且串口打印數(shù)據(jù)。

STM32CubeMX_USART配置(修改版),提供給大家下載地址(360云盤):

https://yunpan.cn/cMPKPHVbJtNCB 訪問密碼 415b

Ⅲ、軟件工程說明

接下來講述一下使用STM32CubeMX新建的軟件工程(MDK-ARM版本)。

1.目錄結(jié)構(gòu)


在MDK-ARM工程中,可以看到四個(gè)目錄,分別是:

HAL庫:這個(gè)庫類似于標(biāo)準(zhǔn)外設(shè)庫(在Drivers目錄下)

啟動(dòng)文件startup_stm32f103xe.s:這個(gè)文件也和標(biāo)準(zhǔn)外設(shè)庫里面文件startup_stm32f10x_hd.s類似。

User用戶應(yīng)用:這個(gè)目錄下是用戶添加源代碼文件的目錄,如果要添加新文件可以在這里添加。

CMSIS微控制器軟件接口標(biāo)準(zhǔn):這個(gè)目錄也是屬于底層的代碼(和我之前使用標(biāo)準(zhǔn)外設(shè)庫建立的軟件工程類似,也是位于Drivers目錄下)。

2.添加用戶代碼區(qū)域

打開使用STM32CubeMX新建的軟件工程可以看見很多地方有成對(duì)的注釋代碼“USER CODE BEGIN”和“USERCODE END”,這兩個(gè)注釋之間就是用戶添加自己代碼的區(qū)域。如main.c文件下就有多處用戶編程區(qū)域:


3.初始化配置代碼描述

當(dāng)我們使用STM32CubeMX新建軟件工程后,打開軟件可以看見里面有很多代碼就是通過STM32CubeMX工具自動(dòng)生成的(是STM32CubeMX的特性),下面大概講述一下本文生成的代碼。

A.四個(gè)主初始化代碼:

HAL_Init();HAL庫底層初始化

SystemClock_Config();時(shí)鐘配置

MX_GPIO_Init();IO初始化(用戶需求)

MX_USART1_UART_Init();USART初始化(用戶需求)


這四個(gè)主初始化配置代碼中,前面兩個(gè)基本上是使用STM32CubeMX工具生成都有的代碼,后面兩個(gè)才是用戶根據(jù)自己需求配置的代碼。


B. HAL_Init();

這個(gè)屬于軟件工程的標(biāo)配,主要對(duì)初始化(默認(rèn))FLASH和NVIC等。

這個(gè)函數(shù)會(huì)使程序不能訪問FLASH,也就是為什么我們程序在運(yùn)行的時(shí)候不能下載代碼的原因,解決的辦法:1.不調(diào)用該函數(shù); 2.使MCU處于復(fù)位狀態(tài)下載代碼。


C. SystemClock_Config();

當(dāng)你使用以前標(biāo)準(zhǔn)外設(shè)庫開發(fā)過STM32,知道時(shí)鐘初始化代碼,那么這個(gè)函數(shù)應(yīng)該很熟悉。其實(shí)這里的配置就是上面說的RCC配置(時(shí)鐘樹),參數(shù)就是時(shí)鐘樹對(duì)應(yīng)的值??磿r(shí)鐘樹就很容易理解。

位于main.c文件。


D. MX_GPIO_Init();

這個(gè)函數(shù)是我們配置的IO函數(shù)(對(duì)PF11引腳初始化,很簡單),位于main.c文件。

和以前使用標(biāo)準(zhǔn)外設(shè)庫開發(fā)類似,其中的參數(shù)就是上面“綜合配置” 里設(shè)置的。


E. MX_USART1_UART_Init();

這個(gè)函數(shù)是我們配置的USART,位于main.c文件。

和以前使用標(biāo)準(zhǔn)外設(shè)庫開發(fā)類似,其中的參數(shù)就是上面“綜合配置” 里設(shè)置的,波特率、數(shù)據(jù)位數(shù)、停止位等。


Ⅳ、說明

以上簡單講述了使用STM32CubeMX生成的軟件工程,后續(xù)會(huì)定期更新使用STM32CubeMX新建各種外設(shè)資源工程的文章,敬請(qǐng)等待。

如果是STM32初學(xué)者的話,不建議立刻使用這個(gè)工具來開發(fā),建議先學(xué)習(xí)標(biāo)準(zhǔn)外設(shè)庫開發(fā),因?yàn)檫@個(gè)工具生產(chǎn)的代碼(HAL庫)相比以前標(biāo)準(zhǔn)外設(shè)庫理解起來相對(duì)困難一點(diǎn)。

以上總結(jié)僅供參考,若有不對(duì)之處,敬請(qǐng)諒解。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉