STM32 HAL庫學習(一) STM32CubeMX和TRUEStudio的使用
最近開始學習STM32的HAL庫,之前有用過std庫函式做STM32開發的基礎,因此學習HAL庫會更容易上手一些,但對於新的程式設計、下載工具以及HAL庫仍有許多不清晰的地方。經過初步的實驗實現點亮LED燈和串列埠的傳送資料之後,對所用到的幾個工具以及HAL庫進行一個總結。
HAL —— 硬體抽象層(Hardware Abstraction Layer),是STM32最新推出的抽象層嵌入式軟體,支援中介軟體元件(如RTOS,USB,TCP / IP和圖形等),便於使用者實現移植。
韌體庫框架:
HAL Driver檔案介紹:
stm32f0xx_hal.h/stm32f0xx_hal.c
—— HAL_Init(void),配置Flash預取、時基源(systick)、NVIC和底層配置
—— HAL_DeInit(void),復位所有外設(APB1、APB2和AHB)
—— 幾個weak函式 實現延時 HAL_IncTick、HAL_GetTick、HAL_Delay
stm32f0xx_hal_def.h:定義了HAL庫所需的一些公用的結構體、列舉變數等
stm32f0xx_hal_conf.h:define了所需要用到的外設使能,例如如果用到ADC,就取消註釋“#define HAL_ADC_MODULE_ENABLED”,則編譯時會將與ADC定義有關的標頭檔案和原始檔載入進來
stm32f0xx_hal_msp.c:實現msp層的init和deinit
整個開發過程使用三個工具:STM32CubeMX、TRUEStudio和STM32CubeProgrammer
首先使用STM32CubeMX對選擇需要開發的晶片或者開發板,對應的晶片或開發板的管腳資訊就會顯示出來
可以對管腳進行編輯,選擇配置模式 ,比如讓PC9配置成輸出,以及允許UART1的功能,之後就是生成程式碼,在project/setting裡面設定工程名稱、使用的IDE(我這裡是TRUEStudio,也可以選擇MDK等其他IDE),設定需要載入的庫(Code Generator)等,點選生成程式碼即可生成含HAL庫的工程,用TRUEStudio開啟進行編輯。
由於在STM32CubeMX中我們已經編輯了設定,因此生成的程式碼中已經完成了我們所需外設的初始化工作,具體都在生成的外設.c原始檔(例如gpio.c、uart.c)中的init函式(例如MX_GPIO_Init(),MX_USART1_UART_Init())中實現,我們要做的只需要在相應的USER CODE區域中新增自己的程式碼(其實就是呼叫HAL外設功能實現函式),如下:
while (1)
{
/* USER CODE END WHILE */
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_RESET);
HAL_UART_Transmit(&huart1,pData,12,1000);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,GPIO_PIN_SET);
/* USER CODE BEGIN 3 */
}
點選編譯後會生成.hex檔案,TRUEStudio可以除錯程式
開啟STM32Cube Programmer,連線STLink(STM32F072開發板有板上STLINK,直接連USB就可以進行STLINK除錯) ,載入.hex檔案燒錄到開發板中即可。