Description of STM32F1xx HAL drivers用户手册
STM32Cube 允许图形生成C初始化代码,HAL库在STM32产品组合中具有高移植性。
手册包括:
1.HAL库驱动概述
2.每个外设驱动的详细介绍:结构体配置、函数功能、如何使用API接口构建程序。
HAL库概述
HAL库API标准化了驱动程序的结构、函数和参数名称。每个模块连接到一个独立的外设。
HAL的主要特性如下:跨系列可移植api集,涵盖常见的外设特性以及针对特定外设特性的扩展api。
三种API编程模型:轮询、中断和DMA。
api是RTOS兼容的:完全可重入的api在轮询模式下系统地使用超时。
外设多实例支持允许对给定外设(USART1, USART2…)的多个实例进行并发API调用。 所有HAL api都实现了用户回调函数机制:外设Init/Delnit HAL api可以调用用户回调函数来执行外设系统级初始化/去初始化(时钟、gpio、中断、DMA);外设中断事件;错误事件。
对象锁定机制:安全的硬件访问,防止对共享资源的多次虚假访问。
用于所有阻塞进程的超时:超时可以是一个简单的计数器或一个时基。
HAL和用户应用程序文件
HAL驱动程序文件由以下一组文件组成
文件 | 描述 |
stm32f1xx_hal_ppp.c | 主外设/模块驱动文件,包括所有STM32通用设备的API 如:stm32f1xx_hal_adc.c |
stm32f1xx_hal_ppp.h | C驱动文件的头文件,它包括常用的数据,句柄和枚举结构,定义状态、宏、和外部引用API接口 如:stm32f1xx_hal_adc.h |
stm32f1xx_hal_ppp_ex.c | 外设/模块驱动拓展文件,某个型号或系列特定的API,或者新定义的API如果内部流程以不同的方式实现,覆盖默认通用的API |
stm32f1xx_hal_ppp_ex.h | 拓展文件的头文件 |
stm32f1xx_hal.c | HAL库初始化,并包括DBGMCU、重映射、基于滴答时钟的延时API |
stm32f1xx_hal.h | 对应头文件 |
stm32f1xx_hal_msp_template.c | 包含应用程序中使用外设的MSP初始化和反初始化(主例程和回调),模板文件可复制到应用文件夹 |
stm32f1xx_hal_conf_template.h | 给定应用自定义驱动文件,模板文件 |
stm32f1xx_hal_def.h | 公共HAL库资源,如公共定义状态、枚举、结构体和宏 |
使用HAL构建应用程序的最小文件
文件 | 描述 |
system_stm32f1xx.c | 文件包含Systeminit(),在启动时被调用,复位之后,main函数之前。 在启动时不配置系统时钟(与标准库相反),使用用户文件中的HALAPI来完成。 允许重新定位内部SRAM的向量表。 |
startup_stm32f1xx.s | 包含重置处理程序和异常向量的工具链特定文件。对于某些工具链,允许调整堆栈大小以使用用户程序需求 |
stm32f1xx_flash.icf(可选) | EWARM工具链的链接器文件,主要允许调整堆栈大小以使用应用程序需求 |
stm32f1xx_hal_msp.c | 包含应用程序中使用外设的MSP初始化和反初始化(主例程和回调),模板文件可复制到应用文件夹 |
stm32f1xx_hal_conf.h | 允许用户为应用裁剪HAL库驱动程序。 此配置不是强制裁剪的。也可以使用默认配置(含没有用到外设/模块的HAL驱动程序) |
stm32f1xx_it.c/.h | 包含异常处理和外设中断服务程序 以固定事件间隔调用HAL_IncTick()以增加用作HAL时基的本地变量。(在stm32f1xx_hal.c中声明)。缺省条件下,该函数Systick ISR中每隔1ms调用1次。 如果在应用程序中使用基于中断的进程,PPP_IRQHandler()例程必须调用HAL_PPP_IRQHandler()。 |
main.c/.h | 包含主程序,主要有: 调用HAL_Init(); assert_failed实现; 系统时钟配置; 外设HAL库初始化和用户应用程序代码 |