天天看點

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

緒論:

STM32CubeMX 是一個圖形工具,可以非常輕松地配置 STM32 微控制器和微處理器。是以再初始開發過程成可以減少時間周期。或者是對入門初學者使用,能更快的上手應用開發。

本系列教程主要是針對基礎運用下的,選用的開發工具如下:

1、STM32CubeMX

2、IDE為:MDK-Keil

3、開發闆子晶片為:STM32F407ZET6

4、HAL庫

注: 提前安裝好STM32CubeMX 和Keil

本節主要講解工程建立過程 以及LED燈控制

過程如下

1、打開工程選擇開發晶片

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

1)打開STM32CubeMX後,得到界面入上圖所示,舊版有差別,注意,但是界面的相關操作都差不多,主要是布局有變化;

2)選擇箭頭處的“ACCESS TO MCU SELECTOR”,意思是選擇MCU的型号進行配置工程的開始;也可以選擇其它兩個,根據自己使用情況,或可嘗試看看。

3)在(2)點選後會進入下一步晶片具體類型的選擇。

2、開發晶片選擇

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

1)在上圖箭頭處輸出具體的電路闆上的晶片型号,作者使用的晶片型号是"STM32F407ZET6",搜尋時輸入“STM32F407”,得到下圖所示:

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

2)根據上圖搜尋的型号選擇具體晶片,選中後會有深色,選後按照下圖說是點選“Star Project”,開始進入工程配置。

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

3、工程配置界面介紹

1)進入配置後的界面如下圖所示:

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

上圖示志 1:主要是配置晶片的使用,包括:GPIO、時鐘源、Debug、定時器、DMA、ADC、DAC、CAN、FSMC、I2C、SPI、SDIO、UART\USART、等底層驅動使用的配置,以及中間層驅動:FATFS、FREERTOS、LIBJPEG、LWIP等等。詳細選型可以檢視圖示7各位置。

上圖示志2:晶片的時鐘配置,可以詳細的看到每一路的時鐘,及配置大小。(後面會有截圖)

上圖示志3:工程輸出的一些配置,包括目錄,工程名稱、選用的IDE、堆棧大小配置等;(後面會講解到)

上圖示志4:一些開發工具的使用配置,目前暫不涉及使用;

上圖示志8:以圖形的方式展示晶片,可放大縮小檢視每一個引腳,并通過滑鼠左右鍵配置IO引腳。

上圖示志5:在所有配置完成後,點選即可生成代碼工程,并用配置的IED打開工程即可。

4、工程配置

1)配置RCC,即晶振的選擇配置;

選擇"Pinout&Configuration"->“System Core”->“RCC”,如下圖步驟1、2、3;

High Speed Clock(HSE):表示外部高速晶振;

High Speed Clock(HSE):表示外部低速晶振,使用RTC實時時鐘是一般用這個;

在步驟4、5可選擇晶振的配型,“BYPASS Clock Source”和“Crystal/Ceramic Resonator”兩種,第一個是旁路時鐘源,第二個是晶體/陶瓷諧振器,一般電路使用的是“Crystal/Ceramic Resonator”。

本教程作者選用的高速和低速都是“Crystal/Ceramic Resonator”。

如下圖:

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

2)配置SYS,即DEBUG的方式選擇

選擇"Pinout&Configuration"->“System Core”->“SYS”,如下圖步驟1、2、3;

下圖步驟4則是選擇Debug的方式,一般選擇SDW的方式能滿足使用,如果想用JTAG也可選擇JTAG。

本教程在這裡作者選中SDW的方式即“Serial Wire”。

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

3)配置LED燈的GPIO

教程選擇用的開發闆LED0連接配接的是GPIOF9,LED1是GPIOF10,采用共陽電路,是以是低電平有效點亮,如下圖所示:

第一步:選擇GPIOF9,點選滑鼠左鍵,會出現下圖示注3的選項,選擇GPIO_Output,即輸出模式。同理選擇GPIOF10;

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

第二步:更改引腳的名稱滑鼠右擊對應的GPIO,彈出 選項清單,選擇“Enter User Lable”,然後輸入名稱;這裡作者的GPIOF9的标簽名稱為LED0,GPIOF10的标簽為LED1;可根據自己的命名習慣填寫,後續在代碼中對其的控制,則是通過這個宏定義的名稱進行的。

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

以上三個方面 就完成了對使用的功能配置。。。。

  1. 時鐘配置

    時鐘配置,點選“Clock Configuration”,如下圖示注1位置;

    在下圖示注2位置,輸入時鐘總線的最終頻率,根據晶片有效範圍設定,一般F1的晶片為72,F4的為168或180,這裡作者選用180MHZ,輸入後回車,會有提示,對提示進行确認即可。這樣時鐘的大小配置即可完成。

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

5)輸出工程檔案配置

第一個:項目配置,如下圖示注,

标注1:選擇“Project Manager”,進入項目配置;

标注2:項目工程檔案相關的配置;

标注3:設定工程的名稱,這裡作者就用”LED“,可根據自己要求寫;

标注4:工程檔案存放的路徑目錄,不要包含中文路徑,否則可能會報錯。。

标注5:工程的IDE選擇,此教程選用的是keil,是以選擇的是MKD-ARM,可根據自己使用的IDE選擇對應的。

标注6:IDE的版本,預設最新版本即可,如果是keil4則選擇低的版本;

标注7:堆棧大小的設定,目前這個LED工程使用不大,是以預設大小即可,後續的其它功能的教程會涉及堆棧大小的修改。

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

6)代碼生成配置

第二個:代碼生成配置,如下圖示注,

标注1:選擇“Project Manager”,進入代碼項目配置;

标注2:代碼生成相關的配置;

标注3:設定使用的庫檔案

第一個選項是:複制所有的庫檔案到工程中;

第二個選型是:隻複制需要用到的庫檔案;

第三個選項是:在工具鍊項目配置檔案中添加必要的庫檔案作為參考

此處作者選用第一個,複制所有的庫檔案。。。

标注4:生成檔案的配置

第一個:為每個外設生成一對“.c/.h”檔案的外設初始化;

第二個:重新生成時備份以前生成的檔案;

第三個:重新生成時保留使用者代碼;

第四個:不重新生成時删除以前生成的檔案;

此處作者選用 第一個,第三個,第四個;

标注5:以上所有配置好後,點選“GENERATE CODE”,生成代碼工程;

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

5、代碼生成

點選“GENERATE CODE”,生成代碼工程;提示如下,點選“Open Project”打開工程;

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

6、添加LED控制代碼

1)打開工程後如下所示:

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

2)添加LED控制代碼

第一步:打開工程後,先點選“

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

”編譯一下,確定相關的.h檔案能夠找得到。

第二步:在“main.h”添加如下圖所示代碼:

//寫GPIO
#define LED0(n) HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, n?GPIO_PIN_SET:GPIO_PIN_RESET )
#define LED1(n) HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, n?GPIO_PIN_SET:GPIO_PIN_RESET )

//GPIO狀态取反-即反轉
#define ToggLED0() HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin)
#define ToggLED1() HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin)
           
<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

第三步:在主函數添加控制代碼

下圖代碼方法1是采用單獨設定狀态的方式控制LED0的閃爍,方法2是采用反轉的方式控制LED1閃爍;

使用其中一種即可;這裡作者選用第一種進行測試。

如下圖:

/*******************方法1**************************/
	  LED0(1);			//關閉LED0
	  HAL_Delay(300);	//延時300ms
	  LED0(0);			//關閉LED0
	  HAL_Delay(300);	//延時300ms
/*******************方法2**************************/
	  ToggLED1();			//LED1狀态取反
	  HAL_Delay(300);	//延時300ms
	  
	
           
<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

2)編譯下載下傳

第一步:點選“

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

”進行編譯;

第二步:下載下傳器選擇,根據自己的下載下傳器選擇,這裡作者選用J-LINK;

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

第三步:下載下傳方式配置,相關選項參考下圖即可:

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)
<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

第四步:下載下傳

點選“

<STM32>STM32CubeMX-基礎工程建立及LED燈控制 (1)

”下載下傳代碼即可。

7、效果

由于視訊無法直接上傳,這裡就看不見了。

作者下載下傳後能看到LED0閃爍。

總結:至此,整個LED工程的建立,及控制閃爍,已完成;

歡迎交流:QQ759521350

-------------------以上内容如有不足之處,還望指出,交流----------------

--------------------------------轉載标明出處--------------------------------

繼續閱讀