最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

1.構(gòu)建STM32F10x Hal庫工程的開發(fā)環(huán)境詳解

2023-07-18 00:30 作者:高博士_嵌入式  | 我要投稿

1.1?認(rèn)識硬件環(huán)境

1.1.1?ARM簡介

·ARM既指ARM公司,也指ARM處理器內(nèi)核

·ARM公司是全球領(lǐng)先的半導(dǎo)體知識產(chǎn)權(quán)(IP)提供商,全世界超過95%的智能手機(jī)和平板電腦都采用ARM架構(gòu)。

·ARM公司設(shè)計(jì)ARM內(nèi)核,半導(dǎo)體廠商完善內(nèi)核周邊電路并生產(chǎn)芯片。

1.1.2?STM32簡介

·STM32是ST公司基于ARM Cortex-M內(nèi)核開發(fā)的32位微控制器

·STM32常應(yīng)用在嵌入式領(lǐng)域,如智能車、無人機(jī)、機(jī)器人、無線通信、物聯(lián)網(wǎng)、工業(yè)控制、娛樂電子產(chǎn)品等

·STM32功能強(qiáng)大、性能優(yōu)異、片上資源豐富、功耗低,是一款經(jīng)典的嵌入式微控制器。

1.2?軟件開發(fā)環(huán)境準(zhǔn)備

基于HAL庫的開發(fā)需要在Keil MDK與STM32Cube MX上進(jìn)行。

?

1.2.1?Keil?MDK安裝

第一步:下載Keil?MDK。

打開Keil?MDK官方網(wǎng)站(https://www2.keil.com/mdk5)根據(jù)網(wǎng)站上的指引下載MDK安裝的exe文件,在正式下載之前需要根據(jù)網(wǎng)站提示注冊用戶并填寫必要的信息。

第二步:安裝Keil?MDK?5。

以管理員身份運(yùn)行上一步下載的MDK安裝程序,勾選同意用戶協(xié)議(如下圖)。

?

然后,選擇Keil5的安裝路徑并填寫用戶信息。

?

?

隨后進(jìn)入Keil5安裝進(jìn)度條顯示界面,等待安裝完成點(diǎn)擊“Finish”按鈕,此后會自動彈出在線安裝支持包的界面,因?yàn)槲覀儠罄m(xù)手動配置,所以直接關(guān)閉即可。

1.2.2?安裝STM32Cube MX

安裝STM32CubeMX必須具備的條件

(1)JRE(Java Runtime Environment):JAVA運(yùn)行環(huán)境。

(2)STM32CubeMX軟件:生成初始化代碼的地方。

(3)HAL庫 PACK包:F0、F1、F3、H7等Cortex內(nèi)核,都需要對應(yīng)的PACK包安裝。

第一步:安裝JAVA JRE

64位JRE官網(wǎng)下載鏈接: (https://www.java.com/en/download/manual.jsp)

(1)勾選“更改目標(biāo)文件夾”,點(diǎn)擊“安裝”。

?

(2)點(diǎn)擊“更改(C)...”修改目標(biāo)路徑地址(也可以不用修改)。

?

?(3)等待安裝完成(20s左右的時間),關(guān)閉界面。

?

?

第二步:安裝STM32CubeMX

(1)官網(wǎng)下載安裝包:www.st.com/stm32cubemx,選擇“Get Software”。

?

?(2)選擇對應(yīng)的STM32CubeMX版本信息,本用例使用STM32CubeMX-5.3.0版本實(shí)測。

備注:不想在官網(wǎng)下可以在百度云盤下載如下提供STM32CubeMX(V6.1.1)云盤下載地址:

百度網(wǎng)盤鏈接:?https://pan.baidu.com/s/1hsIibEmsB91xFclJd-YTYA?pwd=jauj?

提取碼:jauj

(3)打開STM32CubeMX-5.3.0安裝包,點(diǎn)擊“Next”。

?

?(4)同意協(xié)議“I accept the terms of this license agreement.”,點(diǎn)擊“Next”。

?

?(5) 勾選第一個即可,第二個選項(xiàng)是是否同意ST公司收集你的個人使用信息等。

?

(6)選擇要安裝的目錄,點(diǎn)擊“Next”。

?

(7)彈窗 Warning,點(diǎn)Yes即可。

備注:這句話意思是安裝本軟件可能會與文件夾之前文件沖突,導(dǎo)致文件夾之前文件丟失是否繼續(xù) ?點(diǎn)Yes繼續(xù)即可。

?

(8) 默認(rèn)設(shè)置,點(diǎn)擊“Next”即可。

?

?(9)等待安裝完成,點(diǎn)擊“Next”。

?

(10)安裝完成后,點(diǎn)擊Done,即可完成安裝。

?

1.2.3?安裝STM32 HAL庫

STM32 HAL固件庫是Hardware Abstraction Layer的縮寫,中文名稱是:硬件抽象層。HAL庫是ST公司為STM32的MCU最新推出的抽象層嵌入式軟件,為更方便的實(shí)現(xiàn)跨STM32產(chǎn)品的最大可移植性。HAL庫的推出,可以說ST也慢慢的拋棄了原來的標(biāo)準(zhǔn)固件庫,這也使得很多老用戶不滿。但是HAL庫推出的同時,也加入了很多第三方的中間件,有RTOS,USB,TCP / IP和圖形等等。

和標(biāo)準(zhǔn)庫對比起來,STM32的HAL庫更加的抽象,ST最終的目的是要實(shí)現(xiàn)在STM32系列MCU之間無縫移植,甚至在其他MCU也能實(shí)現(xiàn)快速移植。

并且從16年開始,ST公司就逐漸停止了對標(biāo)準(zhǔn)固件庫的更新,轉(zhuǎn)而傾向于HAL固件庫和 Low-layer底層庫的更新,停止標(biāo)準(zhǔn)庫更新,也就表示了以后使用STM32CubeMX配置HAL/LL庫是主流配置環(huán)境;

HAL庫,有在線安裝、離線安裝兩種方式。這里實(shí)測在線安裝方式(離線安裝方式請自行l(wèi)ookup)。

(1)打開STM32CubeMX 軟件,點(diǎn)擊右上角“Help”,選擇“Manage ?embedded ?saftware packages”

?

(2)如下所示的選擇型界面,勾選所需的HAL庫,本教程開發(fā)的STM32F103C8t開發(fā)板作為演示,選擇的則為STM32F1 —>STM32Cube MCU Package for STM32F1 Series 1.8.5版本。

?

?(3)安裝完畢后,點(diǎn)擊右下角的Close即可。

1.2.4?St-Link?V2使用

使用St-Link?V2之前需要安裝驅(qū)動,不然電腦無法操作單片機(jī)。驅(qū)動安裝方法參考文章:http://t.csdn.cn/HnLK8

安裝好驅(qū)動后需要用杜邦線按照以下規(guī)定來連接。

st-link與stm32板相連,需要遵照:

1)?SWDIO與TMS引腳相連

2)?GND與GND腳相連

3)?SWCLK與TCK引腳相連

4)?3.3V VCC與板子上的3.3V引腳相連

?

1.3?構(gòu)建模板工程的詳細(xì)步驟

本小節(jié)以一個簡單的工程(以點(diǎn)亮一個LED燈為例)介紹Stm32F103C8T6的Hal庫工程開發(fā)模板。

1.3.1?STM32CubeMX新建工程

在STM32CubeMX中工程初步建立(新建工程選擇芯片型號)。

?


?

1.3.2?時鐘模塊配置

(設(shè)置HSE,LSE,MCO)。

HSE與LSE勾選晶振。

?


1.3.3?時鐘系統(tǒng)配置

(PLL,SYSCLK,AHB,APB1,APB2)。

由于STM32F10的外部晶振是8Mhz所以這里寫8。

?


進(jìn)入鎖相環(huán)時候選擇器選擇外部晶振并且由于該芯片的時鐘主頻是72Mhz要給PLLMul乘9。

?


系統(tǒng)時鐘選擇的時候選擇來自外部晶振的時鐘。

?


由于此刻時鐘頻率超過官方限制所以這里會爆紅。

?


所以要在APB1 Prescaler這里分頻,即可得到完整的系統(tǒng)時鐘配置。

?


1.3.4?GPIO引腳配置

(以連接LED燈的IO為例介紹如何配置)

本次 工程設(shè)計(jì)是要讓引腳為PC13的LED亮起來所以需要在芯片上找到引腳PC13然后控制GPIO口PC13為輸出設(shè)置完成后PC13應(yīng)該變?yōu)榫G色。

?


在GPIO口這里設(shè)置LED的初始電平,輸出速度和該LED的宏定義。

?


1.3.5?Cortex內(nèi)核配置(SYS(Debug)配置,NVIC(優(yōu)先級分組))。

SYS由于是通過STlink仿真所以SYS設(shè)置為

?


?

1.3.6?生成工程代碼(設(shè)置工程,MDK等,最后生成代碼工程)。

生成過程如下:

Application Structure可以根據(jù)個人喜好來選擇,選項(xiàng)中Advanced與Basic的區(qū)別如下:

?


?

其中Project name是自己取的工程名(不能取漢字),Project Location最好是在桌面建一個文檔來存儲。

Toolchain 選擇MDK進(jìn)行編譯。

?


對于HAL庫的支持包由于此工程很簡單所以只需要copy需要的庫函數(shù)即可。

而Generated files勾選第一個是為了分開.c與.h文件方便進(jìn)行管理。

?

對工程進(jìn)行保存,然后點(diǎn)擊Generate Code進(jìn)行代碼生成

?

?

1.3.7?編寫用戶程序(main.c文件預(yù)留的位置編寫代碼)。?

點(diǎn)擊Open Project 打開生成的代碼會直接跳轉(zhuǎn)到Keil MDK不用像庫函數(shù)開發(fā)那樣手動新建工程(如下圖所示)。

?

?

嘗試進(jìn)行一次編譯如果沒有Warning和ERROR則自動生成代碼沒有問題。

?

然后點(diǎn)擊魔術(shù)棒點(diǎn)Debug,仿真器選擇STlink然后點(diǎn)Settings在flash Download中勾選Reset and Run。

?

?

然后對main.c進(jìn)行編程點(diǎn)亮一個LED,對于用STM32CubeMX生成的初始代碼,我們手寫的代碼有固定區(qū)域:STM32CubeMX生成的main.c代碼中USER CODE BEGIN與USER CODE END 之間的區(qū)域就是手寫代碼的區(qū)域。(如下圖標(biāo)紅框出的區(qū)域就是我們可以手寫代碼的區(qū)域。)

?

由于引腳初始設(shè)置為高電位,只需要將電平拉低即可點(diǎn)亮LED。代碼如下。

// 代碼樣式示例

/* USER?CODE BEGIN WHILE */

while(1)

{

????/* USER CODE END WHILE */

?

????/* USER CODE BEGIN?3 */

????HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);

}

/* USER CODE END 3 */

未編譯下載之前面包板如圖所示:

?

編譯下載如下圖所示:

?

每次代碼修改之后都要先編譯然后下載。

點(diǎn)亮LED如下圖所示:

?

????如果我們想重新點(diǎn)亮另外的燈,就需要在STM32CubeMX上重新設(shè)置IO口而重新設(shè)置之后我們手動添加的代碼會保留下來,這個時候?qū)O口的宏定義非常重要。例如:我們用PA0端口來點(diǎn)亮一個LED只需要把PA0給設(shè)置為輸出,然后將PC13的宏定義給PA0,這樣就能將點(diǎn)的燈替換掉。(如下圖所示)

?

?

????而對于一個工程,如果不是替換IO口那么對于IO口的宏定義要保證不同,不能出現(xiàn)一個宏定義對應(yīng)多個IO口,這樣的話重新生成代碼,會對我們之前自己寫的代碼產(chǎn)生影響。


1.構(gòu)建STM32F10x Hal庫工程的開發(fā)環(huán)境詳解的評論 (共 條)

使用qq登录你需要登录后才可以评论。
安塞县| 来宾市| 尤溪县| 蒙自县| 鄂托克前旗| 乌苏市| 新邵县| 北宁市| 新干县| 南宁市| 新田县| 吴忠市| 同江市| 太保市| 栖霞市| 酉阳| 久治县| 乌海市| 隆安县| 绥宁县| 蒲城县| 印江| 金华市| 论坛| 太康县| 吴川市| 桃园市| 金寨县| 姚安县| 新营市| 洪泽县| 德昌县| 阜宁县| 青冈县| 金寨县| 东安县| 安徽省| 余庆县| 章丘市| 文水县| 尉犁县|