当前位置: 首页 > news >正文

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驱动程序文件由以下一组文件组成

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.cHAL库初始化,并包括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库初始化和用户应用程序代码

HAL数据结构


http://www.mrgr.cn/news/96885.html

相关文章:

  • Mysql的安装
  • ControlNet-Tile详解
  • 3D意识(3D Awareness)浅析
  • Scala相关知识学习总结3
  • Java8 到 Java21 系列之 Lambda 表达式:函数式编程的开端(Java 8)
  • 【Linux】内核驱动学习笔记(二)
  • L2-001 紧急救援
  • Java基础 4.2
  • 大智慧前端面试题及参考答案
  • Shiro学习(三):shiro整合springboot
  • 【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)
  • C++封装、继承、多态(虚函数)
  • 表面法线估计(Surface Normal Estimation)
  • 【JavaSE】String 类
  • AI:机器学习模型-线性回归
  • 《数字图像处理》教材寻找合作者
  • Java 8 的流(Stream API)简介
  • JavaScript instanceof 运算符全解析
  • 蓝桥杯省模拟赛 数位和
  • Linux: 进程信号初识