历史上的今天
今天是:2025年08月05日(星期二)
2019年08月05日 | STM32 HAL库头文件包含关系
2019-08-05 来源:eefocus

如图,从左到右下的顺序写:
--------------------------------------------------------------------------------------------------------------------------------
The header of the common HAL driver file(stm32f1xx_hal.h) includes the common
configurations for the whole HAL library.It is the only header file that is included in the user
sources and the HAL C sources files to beable to use the HAL resources.
stm32f1xx_hal.h
Thisfile contains all the functions prototypes for the HAL module driver.
这包含了HAL模型的所有驱动
定义了关于调试所用的宏函数
#define__HAL_DBGMCU_FREEZE_TIM2()
SET_BIT(DBGMCU->CR,DBGMCU_CR_DBG_TIM2_STOP)
HAL的初始化与功能函数
HAL_Delay();
它包含的头文件:#include"stm32f1xx_hal_conf.h"
--------------------------------------------------------------------------------------------------------------------------------
stm32f1xx_hal_conf.h
包含了用户可能会用到的外设模型头文件Module Selection
#include"stm32f1xx_hal_rcc.h"
定义了单片机的晶振频率Oscillator Values adaptation
#defineHSE_VALUE ((uint32_t)8000000)
系统的配置System Configuration
#define VDD_VALUE ((uint32_t)3300) /*! Assert参数检查函数的定义 #define assert_param(expr) ((expr) ? (void)0: assert_failed((uint8_t *)__FILE__, __LINE__)) 它包含的头文件:各种外设模型头文件,如stm32f1xx_hal_adc.h等一堆。 -------------------------------------------------------------------------------------------------------------------------------- stm32f1xx_hal_adc.h(举adc这个外设头文件) 相对应的stm32f1xx_hal_adc_ex.h,是其对应的扩展功能的头文件,差不多~ 定义了外设初始化结构体,还 有一堆其它的用于配置的结构体 ADC_InitTypeDef 常用的常量Exported constants #defineHAL_ADC_ERROR_NONE ((uint32_t)0x00) /*!< Noerror 宏函数定义Exported macro #defin__HAL_ADC_ENABLE(__HANDLE__) (SET_BIT((__HANDLE__)->Instance->CR2,(ADC_CR2_ADON))) 各种输出函数的声明 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc); 它包含的头文件: "stm32f1xx_hal_def.h" "stm32f1xx_hal_adc_ex.h" -------------------------------------------------------------------------------------------------------------------------------- stm32f1xx_hal_def.h Thisfile contains HAL common defines, enumeration, macros and structures definitions. 这文件包含的是HAL库共用的宏定义,结构体,牧举等。 HAL的状态结构体: HAL_StatusTypeDef 它包含的头文件: #include "stm32f1xx.h" #include "Legacy/stm32_hal_legacy.h" -------------------------------------------------------------------------------------------------------------------------------- stm32f103xe.h(举F103的例子)包含了整个库所共用的配置,这也是所有外设与用户函数的头文件所仅需要包含的头文件。 它定义了: 所有外设寄存器ADC_TypeDef(struct), 所有中断的编号IRQn_Type(enum), 外设的地址, #define FLASH_BASE ((uint32_t)0x08000000) 检查参数用的宏函数 #define IS_ADC_ALL_INSTANCE(INSTANCE)(((INSTANCE) == ADC1) || ((INSTANCE) == ADC2) || ((INSTANCE) == ADC3)) 外设中断函数名 #define ADC1_IRQn ADC1_2_IRQn 它包含的头文件包括: #include"core_cm3.h" M3的内核文件 #include"system_stm32f1xx.h" 单片机的系统初始化 #include -------------------------------------------------------------------------------------------------------------------------------- 头文件的包含关系完全与图相同,根据这个关系可以看出来,当使用cube配置或更改外设时,stm32f1xx_hal_conf.h改变,会增减一些外设头文件,这就导致大部分文件需要重新编译,时间有点长。。。。。。 以生成的dac.c/.h这文件举例,.h已经生成了extern DAC_HandleTypeDef hdac ,给外部文件提供接口,只要有包含dac.h就可以直接使用hdac。 cube工程生成的设置里,有个选项是用于是否更删用户外设.c/.h,要注意自己写的代码可能会被删走。。。。以程序的积累来说的角度来说,我更倾向于写一个类似于mydac.c/.h的文件,包含dac.h,有点需要。(那里就可以写很多被定义为weak类型的函数,如回调函数.)
史海拾趣
|
信任你没有见过这样的摩托车,从侧面看就像是一个轮子,其实它有2个并排的轮子,左右平衡容易控制一些,但这样的怪异摩托车前后平衡感到还是很难节制的,看到这个摩托车的第一感到就是担心在快速行进当中,因为平衡没有控制好而向前栽倒。这款叫Uno ...… 查看全部问答> |
|
wince5.0 USB HOST 只能插入两个U盘,怀疑是wince驱动的问题,希望探讨一下! 如题,我在wince5.0下接两个U盘可以正常工作,但接第三个U盘时会跳出输入驱动名称的对话框,而且供电电流是足够的,现在在研究wince的USB HOST驱动,还没发现什么问题,希望有研究过的可以指点一下!… 查看全部问答> |
|
1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉 ...… 查看全部问答> |




