1. 程式人生 > >STM32 HAL庫學習(一) STM32CubeMX和TRUEStudio的使用

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模組驅動檔案,初始化HAL配置、配置時基為1ms

        —— 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檔案燒錄到開發板中即可。