一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

STM32CubeMX軟件工程描述_ USART配置過(guò)程

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

Ⅰ、寫(xiě)在前面

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

STM32CubeMX介紹、下載與安裝

STM32CubeMX使用方法及功能介紹

STM32CubeMX新建工程+基本IO配置過(guò)程

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

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

MDK-ARM下載與安裝

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

Ⅱ、STM32CubeMX新建USART工程

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

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

1.新建工程基本步驟

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

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

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

3.工程配置

2.Pinout配置

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

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

第一步:放大芯片圖標(biāo),找到PF11(可以通過(guò)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ǔ),也是最常見(jiàn)的一種”UART異步串行通信”配置來(lái)講述。

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

3.Clock配置

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

STM32的時(shí)鐘樹(shù)功能比較強(qiáng)大,分頻、倍頻可以根據(jù)你的需求配置出多種時(shí)鐘。STM32CubeMX這個(gè)工具在這一塊也是做的比較人性化的,可以直觀的看見(jiàn)具體配置,而且有錯(cuò)誤提示(注意:不同型號(hào)芯片的時(shí)鐘樹(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ì)過(guò)程可以參看上一篇文章。

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

https://yunpan.cn/cMPy7AbArtxQ8 訪問(wèn)密碼 e92f

6.添加代碼

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

voidTestDelay(uint32_t cnt)

{

while(cnt--);

}

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


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

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

https://yunpan.cn/cMPKPHVbJtNCB 訪問(wèn)密碼 415b

Ⅲ、軟件工程說(shuō)明

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

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


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

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

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

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

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

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

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

3.初始化配置代碼描述

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

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

HAL_Init(); HAL庫(kù)底層初始化

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


C. SystemClock_Config();

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

位于main.c文件。


D. MX_GPIO_Init();

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

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


E. MX_USART1_UART_Init();

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

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


Ⅳ、說(shuō)明

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

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

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

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

    關(guān)注

    69

    文章

    1217

    瀏覽量

    168605
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    198

    瀏覽量

    31513
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

    15868
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32開(kāi)發(fā)入門(mén)進(jìn)階必備!《STM32嵌入式系統(tǒng)開(kāi)發(fā)—基于STM32CubeMX和HAL庫(kù)》新書(shū)發(fā)布!

    近日,由華清遠(yuǎn)見(jiàn)教育科技集團(tuán)精心編撰的教育部高等學(xué)校電子信息類(lèi)專(zhuān)業(yè)教學(xué)指導(dǎo)委員會(huì)規(guī)劃教材、普通高等教育電子信息類(lèi)專(zhuān)業(yè)系列教材——《STM32嵌入式系統(tǒng)開(kāi)發(fā)—基于STM32CubeMX和HAL庫(kù)》重磅
    的頭像 發(fā)表于 04-03 14:54 ?387次閱讀
    <b class='flag-5'>STM32</b>開(kāi)發(fā)入門(mén)進(jìn)階必備!《<b class='flag-5'>STM32</b>嵌入式系統(tǒng)開(kāi)發(fā)—基于<b class='flag-5'>STM32CubeMX</b>和HAL庫(kù)》新書(shū)發(fā)布!

    用TouchGFX生成的工程,再使用STM32CubeMX生成MDK工程,下載時(shí)報(bào)錯(cuò)是怎么回事?

    我在用TouchGFX生成的工程,再使用STM32CubeMX生成MDK工程,編譯后沒(méi)有出錯(cuò),再是在下載時(shí)報(bào)錯(cuò): 如果不加載這個(gè)算法文件,那么按鍵圖標(biāo)就是亂碼。
    發(fā)表于 03-11 06:50

    使用STM32CubeMX生成FreeRTOS的MDK工程,選擇AC6編譯器有很多錯(cuò)誤,為什么?

    使用STM32CubeMX生成FreeRTOS的MDK工程,選擇AC5編譯器可以編譯成功,選擇AC6編譯器有很多錯(cuò)誤,是STM32CubeMX生成FreeRTOS的MDK工程還不支持A
    發(fā)表于 03-11 06:32

    STM32CubeMX生成的FreeRTOS源碼格式如何優(yōu)化?

    如圖,STM32CubeMX生成的FreeRTOS源碼格式有待優(yōu)化,空格都是以箭頭的方式呈現(xiàn),觀感很差。FreeRTOS官方下載的源碼則不存在這個(gè)問(wèn)題,說(shuō)明是STM32CubeMX生成源碼的過(guò)程出現(xiàn)的格式問(wèn)題,希望ST官方能對(duì)
    發(fā)表于 03-10 08:04

    stm32cubemx按照配置重新生成工程,bsp_SysTick.c一直沒(méi)有呢?

    stm32cubemx按照配置重新生成工程,bsp_SysTick.c一直沒(méi)有呢
    發(fā)表于 03-10 07:44

    使用STM32CubeMX生成CMake工程中的FLASH.ld被更改怎么解決?

    使用STM32CubeMX生成CMake工程之后,對(duì)STM32xxxx_FLASH.ld進(jìn)行了修改。然后再次使用STM32CubeMX對(duì)工程
    發(fā)表于 03-10 06:52

    STM32CubeMX生成STM32mp135D的USART1,2,3,6代碼初始化是空的,為什么?

    STM32CubeMX生成STM32mp135D的USART1,2,3,6代碼初始化是空的,參考其他代碼做了初始化操作,可以通過(guò)HAL_USART_Transmit接口發(fā)送數(shù)據(jù),但是
    發(fā)表于 03-07 07:48

    STM32CubeMX用于STM32配置和初始化C代碼生成

    電子發(fā)燒友網(wǎng)站提供《STM32CubeMX用于STM32配置和初始化C代碼生成.pdf》資料免費(fèi)下載
    發(fā)表于 02-26 17:32 ?658次下載

    工程師開(kāi)發(fā)利器:STM32CubeMX 與 eDesignSuite 的協(xié)同開(kāi)發(fā)

    電源效率,并通過(guò) CubeMX 配置 STM32 的低功耗模式。電機(jī)控制與代碼集成在電機(jī)控制項(xiàng)目中,eDesignSuite 生成的算法代碼可直接嵌入 STM32CubeMX 生成的
    的頭像 發(fā)表于 02-26 14:07 ?555次閱讀
    <b class='flag-5'>工程</b>師開(kāi)發(fā)利器:<b class='flag-5'>STM32CubeMX</b> 與 eDesignSuite 的協(xié)同開(kāi)發(fā)

    使用stm32cubeMX無(wú)法生成mdk工程文件?

    幾年前使用過(guò)cubemx,可以生成keil的工程文件。最近有個(gè)工程使用cubemx創(chuàng)建,結(jié)果只能生成stm32cubemx類(lèi)型的文件,無(wú)法生
    發(fā)表于 01-04 20:03

    STM32CubeMX的菜單介紹

    相信初學(xué)者打開(kāi)STM32CubeMX一定是一臉懵逼,里面都是全英文的,不知道從何入手。這里先給大家簡(jiǎn)單講解一下。在新建工程這一欄里,我們最常用的是第一個(gè),它會(huì)彈出一個(gè)芯片列表供你選擇,然后就會(huì)創(chuàng)建一
    的頭像 發(fā)表于 12-25 21:03 ?340次閱讀
    <b class='flag-5'>STM32CubeMX</b>的菜單介紹

    STM32CUBEMX(2)--USART通過(guò)DMA方式接收不定長(zhǎng)數(shù)據(jù)

    : 選擇芯片型號(hào) 使用STM32CUBEMX選擇芯片stm32f030r8,如下所示: 配置時(shí)鐘源 HSE與LSE分別為外部高速時(shí)鐘和低速時(shí)鐘,在本文中使用內(nèi)置的時(shí)鐘源,故都選擇Disable選項(xiàng)
    發(fā)表于 09-04 11:48

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

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

    STM32CubeMX中使用F103ZET6怎么配置LCD?

    STM32CubeMX中使用F103ZET6怎么配置LCD
    發(fā)表于 06-04 10:22

    使用STM32CUBEMX創(chuàng)建一個(gè)基于RTOS的工程,互斥量創(chuàng)建不成功的原因?

    使用STM32CUBEMX創(chuàng)建一個(gè)基于RTOS的工程,使用了互斥量,但互斥量創(chuàng)建不成功
    發(fā)表于 05-15 07:22