STM32HAL库头⽂件包含关系
如图,从左到右下的顺序写:
-------------------------------------------------------------------------------------------------------------------------------- ----------
----------------------------------------------------------------------------------------------------------------------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) /*!<Value of VDD in mv */
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<stdint.h> 关于int的声明~
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------system的头文件
头⽂件的包含关系完全与图相同,根据这个关系可以看出来,当使⽤cube配置或更改外设时,stm32f1x
x_hal_conf.h改变,会增减⼀些外设头⽂件,这就导致⼤部分⽂件需要重新编译,时间有点长。。。。。。
以⽣成的dac.c/.h这⽂件举例,.h已经⽣成了extern DAC_HandleTypeDef hdac ,给外部⽂件提供接⼝,只要有包含dac.h就可以直接使⽤hdac。
cube⼯程⽣成的设置⾥,有个选项是⽤于是否更删⽤户外设.c/.h,要注意⾃⼰写的代码可能会被删⾛。。。。以程序的积累来说的⾓度来说,我更倾向于写⼀个类似于mydac.c/.h的⽂件,包含dac.h,有点需要。(那⾥就可以写很多被定义为weak类型的函数,如回调函数.)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论