0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32CubeMX軟件工程描述_ USART配置過程

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-25 10:43 ? 次閱讀

Ⅰ、寫在前面

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

STM32CubeMX介紹、下載與安裝

STM32CubeMX使用方法及功能介紹

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

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

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

MDK-ARM下載與安裝

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

Ⅱ、STM32CubeMX新建USART工程

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

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

1.新建工程基本步驟

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

1.打開STM32CubeMX軟件,點擊“新建工程”

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配置有三項,我們這里只配置HSE高速外部時鐘,其他兩項LSE外部低速時鐘、MCO時鐘輸出默認(rèn)配置。

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


C.配置USART(串口)

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

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

3.Clock配置

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

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


4.“綜合”配置

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

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

A.IO(PF11)配置


B.USART配置


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

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

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

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

6.添加代碼

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

voidTestDelay(uint32_t cnt)

{

while(cnt--);

}

在主函數(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工程中,可以看到四個目錄,分別是:

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

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

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

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

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

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

3.初始化配置代碼描述

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

A.四個主初始化代碼:

HAL_Init(); HAL庫底層初始化

SystemClock_Config(); 時鐘配置

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

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

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

B. HAL_Init();

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

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


C. SystemClock_Config();

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

位于main.c文件。


D. MX_GPIO_Init();

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

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


E. MX_USART1_UART_Init();

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

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


Ⅳ、說明

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

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • keil
    +關(guān)注

    關(guān)注

    68

    文章

    1207

    瀏覽量

    166170
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30680
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    278

    瀏覽量

    14619
收藏 人收藏

    評論

    相關(guān)推薦

    stm32用串口燒錄怎么設(shè)置

    準(zhǔn)備工作 確保您擁有STM32開發(fā)板和相應(yīng)的硬件設(shè)備,如USB轉(zhuǎn)串口模塊。 安裝STM32CubeMXSTM32CubeProgrammer軟件,這些是ST官方提供的工具,用于
    的頭像 發(fā)表于 08-22 09:33 ?447次閱讀

    STM32CUBEMX配置生成的一個HID設(shè)備,電腦提示設(shè)備描述符請求失敗,為什么?

    如題,win10下。 用最新的 STM32CUBEMX 配置生成的 一個HID設(shè)備編譯正常。時鐘48MHz 也正常 電腦提示 設(shè)備描述符請求失敗 有沒有遇到類似問題的朋友?
    發(fā)表于 04-10 06:05

    STM32CubeMX生成代碼軟件卡死的原因?怎么解決?

    STM32CubeMX 生成代碼 軟件卡死!在生成代嗎時,一直卡死在如圖所示的狀態(tài),進度條一直就不走了。試過多次,一直如此。請問如何解決該問題,原因可能是什么?STM32CubeMX版本5.1.0
    發(fā)表于 04-10 06:03

    STM32CubeMX STM32WL不能配置LoRaWAN的原因?

    STM32CubeMX 中使用STM32WL配置LoRaWAN時不能配置,請問為什么?
    發(fā)表于 04-02 07:47

    STM32CubeMX 6.5.0時鐘配置頁面的ADC時鐘源無法配置怎么解決?

    最新版STM32CubeMX 6.5.0,啟動ADC功能后,時鐘配置頁面的ADC時鐘源仍無法配置。STM32CubeMX 6.4.0使用正常。是不是新版的BUG?需要改進。
    發(fā)表于 03-25 07:04

    STM32CubeMX軟件安裝失敗的原因?怎么解決?

    本童鞋win10系統(tǒng),Java版本為1.8.0_261-b12,通過官網(wǎng)途徑下載STM32CubeMX軟件,包括5.4,6.0,6.5以及6.7版本,安裝過程正常,雙擊打開全部出現(xiàn)“此應(yīng)用無法在你的電腦運行”字樣,請問問題原因以
    發(fā)表于 03-21 07:33

    stm32cubemx生成不了keil工程的原因?

    stm32cubemx生成不了keil工程
    發(fā)表于 03-21 06:00

    如何使用STM32CubeMx配置STM32MP135的LTDC外設(shè)?

    請問一下,如何使用STM32CubeMx配置STM32MP135的LTDC外設(shè),打開后LTDC配置項是空的
    發(fā)表于 03-11 07:37

    基于STM32CUBEMX驅(qū)動低壓步進器電機驅(qū)動器STSPIN220(2)----驅(qū)動STSPIN220

    本文檔的目標(biāo)是提供關(guān)于使用STM32CubeMX驅(qū)動低壓步進電機驅(qū)動器STSPIN220的詳盡信息和操作指南。通過本文檔,將深入了解如何利用STM32CubeMX配置電機驅(qū)動器,以及如何實現(xiàn)對步進電機的精確控制和運動。
    的頭像 發(fā)表于 12-01 15:25 ?800次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b>驅(qū)動低壓步進器電機驅(qū)動器STSPIN220(2)----驅(qū)動STSPIN220

    stm32cube怎么安裝 STM32CubeMX安裝步驟教程

    STM32CubeMXSTM32芯片圖形化配置工具,通過簡單的操作便能實現(xiàn)相關(guān)配置,省去了我們配置各種外設(shè)的時間,支持MDK、IAR Fo
    發(fā)表于 11-14 12:37 ?1416次閱讀
    <b class='flag-5'>stm32</b>cube怎么安裝 <b class='flag-5'>STM32CubeMX</b>安裝步驟教程

    STM8CubeMXSTM32CubeMX功能一樣嗎?

    STM8CubeMXSTM32CubeMX功能一樣嗎?
    的頭像 發(fā)表于 10-31 16:59 ?1541次閱讀
    STM8<b class='flag-5'>CubeMX</b>和<b class='flag-5'>STM32CubeMX</b>功能一樣嗎?

    STM32CubeMX介紹,功耗計算,中間件,CAD視圖

    ,方便,并且直觀的方式來完成這些工作。所有的配置完成后,它還可以根據(jù)所選的IDE生成對應(yīng)的工程和初始化C代碼。除此以外,STM32CubeMX還提供了功耗計算工具,可
    的頭像 發(fā)表于 10-28 08:00 ?1920次閱讀
    <b class='flag-5'>STM32CubeMX</b>介紹,功耗計算,中間件,CAD視圖

    STM32Cube 官方例程學(xué)習(xí)指南

    STM32CubeMX 是 ST 官方提供的一個代碼生成工具。使用該工具,通過圖形化的配置方法,就能快速生成 STM32 的各種片上外設(shè)的初始化代碼。CubeMX 生成的
    發(fā)表于 09-28 06:47

    STM32CubeMX介紹及使用方法

    配置STM32代碼的工具,它把很多東西封裝的比較好,硬件抽象層、中間層、示例代碼等。 現(xiàn)在ST公司升級和維護的庫主要就是STM32CubeMX的HAL庫和標(biāo)準(zhǔn)外設(shè)庫,使用這兩種庫開發(fā)STM32
    發(fā)表于 09-27 08:03

    基于STM32CubeMX開發(fā)U盤訪問應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《基于STM32CubeMX開發(fā)U盤訪問應(yīng)用.pdf》資料免費下載
    發(fā)表于 09-25 09:19 ?2次下載
    基于<b class='flag-5'>STM32CubeMX</b>開發(fā)U盤訪問應(yīng)用