STM32—HAL库

以stm32f4xx.h举例,HAL库是和CubeMX软件来互相配合使用。用CubeMx来配置STM32芯片的时钟、管脚、各个外设的底层配置,再用HAL库去调用这些底层配置文件来实现快速开发的目的。让我们省去了配置大量底层驱动的工作,集中精力专注于应用层实现功能的目的。


stm32f4xx_hal.h:stm32f4xx_hal.c/h 
主要实现HAL库的初始化、系统滴答相关函数、及CPU的调试模式配置
stm32f4xx_hal_conf.h :
该文件是一个用户级别的配置文件,用来实现对HAL库的裁剪,其位于用户文件目录,不要放在库目录中。

接下来对于HAL库的源码文件进行一下说明,后面加上_外设或者模块名(如:stm32f4xx_hal_adc.c):

库文件:
stm32f4xx_hal_ppp.c/.h 
// 主要的外设或者模块的驱动源文件,包含了该外设的通用API
stm32f4xx_hal_ppp_ex.c/.h   
// 外围设备或模块驱动程序的扩展文件。这组文件中包含特定型号或者系列的芯片的特殊API。以及如果该特定的芯片内部有不同的实现方式,则该文件中的特殊API将覆盖_ppp中的通用API。
stm32f4xx_hal.c/.h 
// 此文件用于HAL初始化,并且包含DBGMCU、重映射和基于systick的时间延迟等相关的API

用户级别文件:


stm32f4xx_hal_msp_template.c    
// 只有.c没有.h。它包含用户应用程序中使用的外设的MSP初始化和反初始化(主程序和回调函数)。使用者复制到自己目录下使用模板。
stm32f4xx_hal_conf_template.h   
// 用户级别的库配置文件模板。使用者复制到自己目录下使用
 system_stm32f4xx.c 
// 此文件主要包含SystemInit()函数,该函数在刚复位及跳到main之前的启动过程中被调用。 它不在启动时配置系统时钟(与标准库相反)。 时钟的配置在用户文件中使用HAL API来完成。
 startup_stm32f4xx.s    
// 芯片启动文件,主要包含堆栈定义,终端向量表等
 stm32f4xx_it.c/.h  
// 中断处理函数的相关实现
main.c/.h   

根据HAL库的命名规则,其API可以分为以下三大类:

初始化/反初始化函数: HAL_PPP_Init(), HAL_PPP_DeInit()
IO 操作函数: HAL_PPP_Read(), HAL_PPP_Write(),HAL_PPP_Transmit(), HAL_PPP_Receive()
控制函数: HAL_PPP_Set (), HAL_PPP_Get ().
状态和错误: ** HAL_PPP_GetState (), HAL_PPP_GetError ().

在此结构下,用户代码的处理主要分为三部分:

处理外设句柄(实现用户功能)
处理MSP
处理各种回调函数

void HAL_UART_MspInit(UART_HandleTypeDef *huart);

你可能感兴趣的:(STM32—HAL库)