历史上的今天
返回首页

历史上的今天

今天是: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         关于int的声明~


  --------------------------------------------------------------------------------------------------------------------------------


头文件的包含关系完全与图相同,根据这个关系可以看出来,当使用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类型的函数,如回调函数.)

推荐阅读

史海拾趣

FORYARD公司的发展小趣事

随着业务的不断扩展,FORYARD意识到全球化布局的重要性。1995年,公司决定在中国设立研发中心和生产基地,以利用当地丰富的人才资源和成本优势。这一战略决策极大地提升了FORYARD的产能和研发效率,同时也使其能够更好地服务全球客户。此后,FORYARD还陆续在欧洲、亚洲等地建立了多个分支机构,形成了覆盖全球的研发、生产和销售网络。通过全球化布局,FORYARD不仅增强了自身的市场竞争力,还促进了全球电子产业的交流与合作。

迪一电子公司的发展小趣事

随着市场的不断变化和技术的快速发展,迪一电子公司意识到必须不断创新才能保持竞争力。于是,公司加大研发投入,引进高端技术人才,与国内外知名科研机构合作,成功研发出一系列具有竞争力的新产品。这些新产品不仅提高了公司的市场占有率,还为公司赢得了良好的口碑。

BJB公司的发展小趣事

BJB公司的创立源于对照明电器领域的深刻理解和市场需求的敏锐洞察。创立初期,公司面临着资金短缺、技术挑战和市场竞争等多重困难。然而,通过创始人的坚定信念和团队的共同努力,BJB逐渐攻克技术难关,推出了一系列高质量的照明配件产品,初步在市场中获得了认可。

FIDELIX公司的发展小趣事

在东芯半导体的支持下,FIDELIX开始将其一部分技术团队迁移到国内,加速了存储芯片的国产替代进程。这些技术团队的加入,不仅提升了国内半导体产业的技术水平,也促进了FIDELIX与国内企业的深度融合和协同发展。

艾吉芯(Agertech)公司的发展小趣事

在电子行业的快速发展中,艾吉芯公司凭借其在半导体芯片研发领域的深厚积累,成功推出了一系列高性能的半导体分立器件。这些产品不仅满足了市场对功率半导体的高效、稳定需求,更在技术创新方面取得了显著突破。艾吉芯公司通过持续的研发投入和严格的生产质量控制,确保了产品的可靠性和竞争力,逐渐在市场中树立起了良好的口碑。

浙江东亚电子(DongYa)公司的发展小趣事

浙江东亚电子不仅在国内市场上取得了显著成绩,还积极开拓国际市场。公司已为多家世界五百强企业、上市公司提供服务,如华为、中兴、通用电气及西门子等。通过与这些国际知名企业的合作,公司不仅提升了自身品牌的影响力,还积累了丰富的国际市场经验。

问答坊 | AI 解惑

C++入门

入门级教程,写的很好,不怕你是初学者…

查看全部问答>

历年全国大赛试题集

本帖最后由 paulhyde 于 2014-9-15 09:15 编辑 这是为了备战新一届全国电子设计大赛,收集到得题目。 大家可以参考一下!  …

查看全部问答>

2个并排的轮子的怪异摩托车

信任你没有见过这样的摩托车,从侧面看就像是一个轮子,其实它有2个并排的轮子,左右平衡容易控制一些,但这样的怪异摩托车前后平衡感到还是很难节制的,看到这个摩托车的第一感到就是担心在快速行进当中,因为平衡没有控制好而向前栽倒。这款叫Uno ...…

查看全部问答>

wince5.0 USB HOST 只能插入两个U盘,怀疑是wince驱动的问题,希望探讨一下!

    如题,我在wince5.0下接两个U盘可以正常工作,但接第三个U盘时会跳出输入驱动名称的对话框,而且供电电流是足够的,现在在研究wince的USB HOST驱动,还没发现什么问题,希望有研究过的可以指点一下!…

查看全部问答>

抢答:51里怎样用pwm产生正弦信号?

51里怎样用pwm产生正弦信号呢?…

查看全部问答>

.NET Compact Framework

.NET Compact Framework的经典解释.…

查看全部问答>

atr711只接32.768K晶振可以工作吗

                                 如题…

查看全部问答>

STM32的任何端口都可以作为外部中断输入么?

                                 比如说像51里的INT0,在STM32里面这样的中断引脚是怎么定位的?另外最多可以有多少个外部中断输入?…

查看全部问答>

请不要做浮躁的嵌入式工程师

1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉 ...…

查看全部问答>

今天试着申请了下“金刚狼”

还是XMS的标号。 试着申请MSP430FR5969,但是可能是样品库还没有货的原因不能添加 …

查看全部问答>