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)。
選擇工程後進入工程界面,如下圖所示。
2. 配置外設。
RCC設定,選擇HSE(外部高速時鐘)為Crystal/Ceramic Resonator(晶振/陶瓷諧振器)
GPIO口功能選擇,PB5、PE5為LED2、LED3.找到對應管腳設定為GPIO_Output模式。(黃色引腳為該功能的GPIO已被用作其他功能,可以忽略。綠色表示管腳已使用)
PA0、PE2、PE3、PE4為按鍵輸入管腳,選擇GPIO_OUTPUT模式。
3. 時鐘配置
時鐘配置采用圖形配置,直覺簡單。各個外設時鐘一目了然。STM32最高時鐘為72M,此處隻有在HCLK處輸入72,軟體即可自動配置。(RCC選擇外部高速時鐘)。
有關配置講解:http://blog.sina.com.cn/s/blog_554240170102vu80.html
4.功能外設配置
在配置框我們可以看到有幾個區域,分别對應的功能設定如下
• 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不用配置。
• GPIO Pin Level (管腳狀态):高電平
• GPIO mode (管腳模式 ):推挽輸出
• Maximum output speed (最大輸出速度):高速
• User Label (使用者标簽):LED2(自定義)
更改使用者标簽,管腳配置圖會顯示管腳的标簽。
4. 功耗計算
這個根據配置的外設計算功耗,不用理會。
5. 生成工程報告
點選Project –>Generate Reports或者點選快捷圖示生成報告。系統會提示先建立一個工程項目。點選Yes設定工程。
輸入工程名,選擇工程路徑(注意不要出現中文,否則可能出錯)。工具鍊/IDE選擇MDK-ARM V5。最後面可以設定堆棧大小,此處預設不作修改。
在Code Generator中找到Generated files框,勾選Generated periphera initialization as a pair of '.c/.h' files per IP。外設初始化為獨立的C檔案和頭檔案。
點選生成報告,工程目錄下會生成txt檔案和pdf檔案,裡面記錄了我們剛才的設定。
6. 生成工程代碼
點選Project –>Generate Code或者點選快捷圖示生成工程代碼。
點選Open Project打開工程。到此就配置好工程外設初始化。
7. 添加應用程式
在gpio.c檔案中可以看到LED和KEY管腳的初始化函數。
在stm32f1xx_hal_gpio.h頭檔案中可以看到GPIO的操作函數。
① 在main函數中的while循環中添加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之間,否則下次重新生成代碼後,會被删除)
上面添加了四個函數;
在main.c檔案中的main函數的while循環中添加應用代碼。代碼中使用switch case語句。
再次編譯程式;
總結:STM32Cube提供了固件庫,使用者可直接調用固件庫函數來開發,并且可以很好的實作STM32-MCU全系列的代碼一緻性。同時STM32CubeMX工具提供的可視化引腳、外設、時鐘等配置功能,可以幫助快速完成工程的建立、初始化。大大降低了開發者的工作量。