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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 HAL是ST公司为STM32系列芯片编写的一套文件,用于简化开发过程。这个文件包含了一些常用量的宏定义和外设的结构体变量封装,通过配置结构体变量成员来修改外设的配置寄存器,从而选择不同的功能。这是目前最常用的开发方式,也是学习STM32接触最多的一种开发方式。在HAL中,主要有三个重要的文件:stm32f4xx_hal.h、stm32f4xx_hal_conf.h和STM32F1xx_HAL_Driver文件夹下的inc和src文件夹。stm32f4xx_hal.h实现了HAL的初始化、系统滴答相关函数和CPU的调试模式配置。stm32f4xx_hal_conf.h是一个用户级别的配置文件,用于对HAL进行裁剪,位于用户文件目录而不是目录中。而STM32F1xx_HAL_Driver文件夹下的inc和src文件夹中包含了针对每个STM32外设编写的函数文件,每个外设对应一个.c和.h后缀的文件。这些文件统称为stm32f1xx_hal_ppp.c或stm32f1xx_hal_ppp.h,其中PPP表示外设名称。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [STM32 之 HAL](https://blog.csdn.net/xuzhexing/article/details/90137754)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [STM32 HAL详细介绍](https://blog.csdn.net/wwh219/article/details/108516941)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值