STM32 HAL库

1. 相关概念

1.1. 回调函数

Callback()回调函数与普通函数的本质区别在于调用者不同:普通函数由用户代码调用,而回调函数则是由系统在适当的条件下调用。回调函数用于对各种事件的响应和处理,如当指定的EXTI线上发生中断或事件时,HAL_GPIO_EXTI_Callback()函数会自动执行,以完成某些特定的功能。

1.2. 弱函数

使用了“__weak”修饰的函数,其与一般函数没有太大差别,只是当另有一个不带“__weak”的同名函数被定义时,所有对这个函数的调用都会指向不带“__weak”修饰的那个函数。

2. HAL库

2.1. HAL库(Hardware Abstraction Layer)

HAL库是STM32抽象层嵌入式软件,可以实现对STM32系列器件家族的全面支持并可以增加代码的可移植性。另外,STM32CubeMX软件内部还集成有中间件组件,可以提供对RTOS、USB、TCP/IP以及图形功能的中间层支持。

2.2. HAL库的特点

 提供了通用的应用程序编程接口(API),覆盖了外设的常见功能,为不同家族芯片间的软件移植(如F1至F0)提供了可能。
 三种应用程序编程模型——查询、中断和DMA。
 应用程序编程接口与RTOS兼容。
 支持用户回调功能机制,当外设中断或错误产生时,将会调用用户回调(callback)函数来做相应处理。
 支持对象锁定机制,提供了更加安全的硬件访问方式,以防止软件对共享资源的多重访问。
 在阻塞进程中提供了可编程的超时时间,用于提高软件的可靠性和实时性。

2.3. HAL库的构成

HAL驱动程序源代码基于C语言编写,符合ANSIC标准,提供完整的器件功能支持,可以帮助开发者快速、简易地编写出嵌入式应用程序。例如,HAL驱动为SPI模块提供了诸如初始化和功能配置、管理基于查询方式的数据传输、处理中断和DMA以及管理通信错误等功能。
HAL库的文件结构(注:ppp为外设)
在这里插入图片描述

2.4. HAL库的使用

在使用STM32CubeMX建立软件开发项目时,HAL库驱动文件会随之嵌入程序中,并与其他工程文件一起参与编译。
用户程序文件结构
在这里插入图片描述
msp:处理器支持包

2.5. HAL库文件

STM32CubeMX软件在生成开发项目时会自动将HAL库驱动文件复制到开发项目的相关文件路径下。后续在进行工程扩展时,也可以自行复制HAL文件到开发项目。
在对回调(callback)函数进行定义时,使用了“__weak”这样的关键字。“__weak”在这里是一个宏,用于对函数的弱定义。
在C语言中规定,函数和已初始化的全局变量(包括初始化为0)是强符号,而定义为“弱”属性的函数或未初始化的全局变量是弱符号。另外,程序中同名的强符号只能有一个,否则编译器会给出“重复定义”的错误。而弱符号可以有多个,当有多个弱符号相同时,链接器选择占用内存空间最大的那个。

STM32CubeMX是一款由STMicroelectronics开发的软件工具,用于配置和生成STM32微控制器的初始化代码。它可以帮助开发人员通过图形化界面来配置微控制器的引脚、时钟、外设以及生成初始化代码的框架。通过使用STM32CubeMX,开发人员可以更快速和方便地开始STM32项目的开发。 在STM32CubeMX中,可以选择不同的外设和功能模块来配置STM32微控制器。其中,ADC外设用于模拟信号的转换和采样,可以用于测量传感器的信号值。DAC外设用于数字信号的转换为模拟信号,可以用于生成模拟输出信号。PWM输出则用于产生脉冲宽度调制信号,常用于控制电机、LED灯等设备。 引用和引用是STM32CubeMX教程中关于ADC和PWM输出的内容,它们介绍了如何在STM32CubeMX中配置和使用这两个外设。通过学习这些教程,开发人员可以了解如何使用STM32CubeMX来配置ADC和PWM输出,并生成相应的初始化代码,从而快速地开始使用这些外设进行开发。 总而言之,STM32CubeMX是一种方便的工具,可以帮助开发人员配置和生成STM32微控制器的初始化代码。通过学习相关教程,开发人员可以掌握如何在STM32CubeMX中配置和使用不同的外设和功能模块,从而更高效地进行STM32项目的开发。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【STM32HAL库 STM32CubeMX系列学习教程](https://blog.csdn.net/as480133937/article/details/99935090)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值