天天看點

STM32Cube-按鍵控制LED

STM32Cube 是一個全面的軟體平台,包括了ST産品的每個系列。平台包括了STM32Cube 硬體抽象層(一個STM32抽象層嵌入式軟體,確定在STM32系列最大化的便攜性)和一套的中間件元件(RTOS, USB, FatFs, TCP/IP,  Graphics, 等等).

直覺的STM32微控制器的選擇和時鐘樹配置

微控制器圖形化配置外圍裝置和中間件的功能模式和初始化參數

C代碼生成項目覆寫STM32微控制器的初始化符合IAR™,Keil的™和GCC編譯器。

對于新的産品設計,我們強烈推薦使用STM32Cube來加速你的開發過程,并為以後的産品平台移植打下良好的基礎。

關于HAL庫API的使用方法可以到ST官網下載下傳:https://www.stmcu.com.cn/Index/search?search_keywords=UM1725

1.建立工程

打開STM32cubeMX軟體,點選New Project。選擇對應開闆MCU(STM32F103ZET6)。

STM32Cube-按鍵控制LED

選擇工程後進入工程界面,如下圖所示。

STM32Cube-按鍵控制LED

2.  配置外設。

STM32Cube-按鍵控制LED

RCC設定,選擇HSE(外部高速時鐘)為Crystal/Ceramic Resonator(晶振/陶瓷諧振器)

GPIO口功能選擇,PB5、PE5為LED2、LED3.找到對應管腳設定為GPIO_Output模式。(黃色引腳為該功能的GPIO已被用作其他功能,可以忽略。綠色表示管腳已使用)

PA0、PE2、PE3、PE4為按鍵輸入管腳,選擇GPIO_OUTPUT模式。

STM32Cube-按鍵控制LED

3. 時鐘配置

       時鐘配置采用圖形配置,直覺簡單。各個外設時鐘一目了然。STM32最高時鐘為72M,此處隻有在HCLK處輸入72,軟體即可自動配置。(RCC選擇外部高速時鐘)。

有關配置講解:http://blog.sina.com.cn/s/blog_554240170102vu80.html

STM32Cube-按鍵控制LED

4.功能外設配置

STM32Cube-按鍵控制LED

在配置框我們可以看到有幾個區域,分别對應的功能設定如下

• Multimedia(多媒體):音頻視訊、LCD

• Control(控制):定時器

• Analog(模拟):DAC、ADC

• Connectivity(通訊連接配接):序列槽、SPI 、I2C、USB、ETH

• SYStem(系統):DMA(直接存儲器存取)、GPIO、NVIC、RCC、看門狗

• middlewares(中間件): FreeRTOS、FATFS、LwIP、USB

此工程中DMA沒用的不用配置,NVIC(嵌套中斷向量控制器(Nested Vectored Interrupt Controller))配置中斷優先級。RCC不用配置。

STM32Cube-按鍵控制LED
STM32Cube-按鍵控制LED

• GPIO Pin Level (管腳狀态):高電平

• GPIO mode (管腳模式 ):推挽輸出

• Maximum output speed (最大輸出速度):高速

• User Label (使用者标簽):LED2(自定義)

更改使用者标簽,管腳配置圖會顯示管腳的标簽。

STM32Cube-按鍵控制LED

4.  功耗計算

這個根據配置的外設計算功耗,不用理會。

STM32Cube-按鍵控制LED

5. 生成工程報告

點選Project –>Generate Reports或者點選快捷圖示生成報告。系統會提示先建立一個工程項目。點選Yes設定工程。

STM32Cube-按鍵控制LED

輸入工程名,選擇工程路徑(注意不要出現中文,否則可能出錯)。工具鍊/IDE選擇MDK-ARM V5。最後面可以設定堆棧大小,此處預設不作修改。

STM32Cube-按鍵控制LED

在Code Generator中找到Generated files框,勾選Generated periphera initialization as a pair of '.c/.h' files per IP。外設初始化為獨立的C檔案和頭檔案。

STM32Cube-按鍵控制LED

點選生成報告,工程目錄下會生成txt檔案和pdf檔案,裡面記錄了我們剛才的設定。

6.   生成工程代碼

點選Project –>Generate Code或者點選快捷圖示生成工程代碼。

STM32Cube-按鍵控制LED

點選Open Project打開工程。到此就配置好工程外設初始化。

STM32Cube-按鍵控制LED
STM32Cube-按鍵控制LED

7.   添加應用程式

在gpio.c檔案中可以看到LED和KEY管腳的初始化函數。

STM32Cube-按鍵控制LED
STM32Cube-按鍵控制LED

在stm32f1xx_hal_gpio.h頭檔案中可以看到GPIO的操作函數。

STM32Cube-按鍵控制LED

①     在main函數中的while循環中添加LED流水燈效果的應用程式,按鍵待會

STM32Cube-按鍵控制LED

了解固件庫函數命名方法編寫就很容易了,

一般是:HAL_[外設名]_[功能名]

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);    

這個就是寫管腳函數,就是設定管腳是0還是1;

HAL_Delay(1000);

    這是固件庫裡面的一個延時,用到的是滴答時鐘;

至于程式下載下傳就不說了。

②    按鍵講解

在gpio.c檔案中最後面的USER CODE BEGIN 2和USER CODE END 2中間添加如下四個函數。

(使用者代碼要加在USER CODE BEGIN N和USER CODE END N之間,否則下次重新生成代碼後,會被删除)

STM32Cube-按鍵控制LED

上面添加了四個函數;

STM32Cube-按鍵控制LED

在main.c檔案中的main函數的while循環中添加應用代碼。代碼中使用switch case語句。

STM32Cube-按鍵控制LED

再次編譯程式;

總結:STM32Cube提供了固件庫,使用者可直接調用固件庫函數來開發,并且可以很好的實作STM32-MCU全系列的代碼一緻性。同時STM32CubeMX工具提供的可視化引腳、外設、時鐘等配置功能,可以幫助快速完成工程的建立、初始化。大大降低了開發者的工作量。