硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1665|回复: 1
收起左侧

[HAL] HAL库头文件间的关系及使用

[复制链接]

12

主题

26

回帖

62

积分

初级会员

积分
62
发表于 2021-10-15 15:04:09 | 显示全部楼层 |阅读模式

HAL库主要有3个层次的头文件:
1.芯片系列总包头文件。如H7系列为 stm32h7xx.h, 这也是用户在程序中要包含的头文件。它的主要作用是通过设备型号宏的定义,将具体型号头文件包括进来。
2.    该系列具体型号头文件。如 stm32h743xx. h就是stm32h743的设备文件。在这个文件中有一个外设配置文件stm32h7xx_hal_conf.h,通过这个文件,可以进行外设配置(是否包括相应外设的头文件)。用户也可以不进行配置,它默认包含全部外设头文件。注意,这里的配置仅仅是将头文件包含进来,工程中必须添加相应外设的c 文件后,才能真正使用相应的外设函数。
3.    外设头文件。如ADC对应的头文件stm32h7xx_hal_adc.h, DAC对应的头文件为stm32h7xx_hal_dac.h。
具体说明如下:
stm32h7xx.h是包括各种H7xx系列芯片的总包头文件,在应用程序中使用它即可。通过定义型号宏,可以灵活确定对应的芯片型号。
它分为两大部分:
1.设备型号定义。通过定义STM32H743xx(可以Keil定义,也可以直接放开相关宏定义) ,来确定使用的MCU型号。定义这个宏以后,对应的头文件stm32h743xx.h就被包括进来了。
2.是否使用HAL库。通过定义USE_HAL_DRIVER来确定使用HAL库。定义这个宏以后,stm32h7xx_hal.h这个头文件就被包括进来了。它里面有各种除外设外的HAL函数的声明及相关变量,结构,宏等的定义。除此此外,它还包括一个外设配置头文件stm32h7xx_hal_conf.h,在这个头文件中,通过外设宏的定义和取消,可以将各个外设的头文件包含或排除,如ADCCEC,DAC定义形式如下:
  #define HAL_ADC_MODULE_ENABLED
  #define HAL_CEC_MODULE_ENABLED
  #define HAL_DAC_MODULE_ENABLED
  #define HAL_CORDIC_MODULE_ENABLED
  如果将相应的宏义注释掉,就可以不包含相应外设的头文件。例如,如果不使用ADC外设,将HAL_ADC_MODULE_ENABLED宏定义注释掉,则ADC对应的头文件stm32h7xx_hal_adc.h就被排除了。

评分

参与人数 1金币 +50 收起 理由
eric2013 + 50 赞一个!

查看全部评分

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106728
QQ
发表于 2021-10-15 16:33:43 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 15:31 , Processed in 0.162033 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表