访问电脑版页面

导航:老古开发网手机版STM32单片机STM32单片机Cube编程

浅析STM32 HAL固件库编程文件组织

导读:
关键字:
固件库,STM32,

对于我这种以前只接触过51和AVR单片机编程的小菜来说,现在开始学习STM32的编程,对于函数的功能以及C语言的语法都还好理解,难的是它提供的那一套硬件抽象层(HAL)驱动是怎么和其他的东东搭配在一起组成一个又一个的工程。

首先上两张从ST官方提供的HAL固件库文档截图

从这两张图的话,能对它的构架看出个一二,下面稍稍具体一点分析

HAL固件库编程,它的文件组织大致分三个部分

- HAL驱动

- CMSIS驱动

- 用户编写程序

而假如你使用的是ST官网的开发板,那么你还有一套现成的驱动可供使用,板级支持包(BSP),那么正好向我一样,但是,我不太喜欢使用这个东西,能自己写还是自己写的好。

HAL驱动毫无疑问就是ST提供的一些包装好的硬件抽象层的驱动,这个就是ST提供的利器,必须有,不用是不可能的。CMSIS的话,这个大概是ARM内核相关的一些驱动吧,这个一般我们编程都操纵不到,我们大部分都是调用HAL的程序。除了这两个必须有的,当然主函数也是必须有的,还有其他的一些东东,这些还比较多,但都可以自己参照ST给的例程或是模板自己从零开始写。

下面就其中一些用户配置,但涉及到驱动的文件做一些说明。

有一个stm32f3xx_hal_conf.h(以F3系列为例说明)的HAL驱动配置文件,这个究竟是算HAL驱动还是用户自定义文件呢,我更偏向于后者。在固件库中会模板,可以去修改里面的内容,我就喜欢自己从头写,东西也不多,但是现在自己写还不成功,再看看,这块应该问题不大。

stm32f3xx_it.c,这个文件在模板给的文件里有,但是东西不是很多,看名字就知道这个是和中断有关,对于我的现阶段,用到的中断不多,用到就自己写就好了。

startup_xxx就是以startup开头的一个什么文件,这个貌似是整个工程的起始文件,默认是放在CMSIS下,还是一个.s类型的文件。

有个system什么的文件,它也是包含在CMSIS下的,这个和上一个的文件都比较特殊吧,不过好在这两都不用我们去修改,只要到对应的文件夹下拷贝出来就好了。

总之,就是分三部分,CMSIS,HAL和用户自定义文件,这不管是在文件夹组织,还是在工程结构组织上都可以按照这个逻辑。

来源:工程师曾玲   作者:自由的青  2019/10/27 10:02:00
栏目: [ STM32单片机Cube编程]

相关阅读

有关于STM32Cube的几个常见问题(USB设备库)

STM32标准库改为HAL库的程序实现

STM32CubeMX新建工程的过程及方法解析

STM32程序之MAX6675热电偶温度读取

意法半导体STM32Cube微控制器开发软件在GitHub正式上线

意法半导体为STM32Cube生态系统新增LoRaWAN®固件无线更新支持

基于嵌入式系统原型设计的STM32开放式开发环境详解

意法半导体发布STM32CubeMonitor工具 可实时显示应用程序运行时的变量

STM32单片机的CPU运行性能的算法测试

手机红外遥控器发送红外信号到STM32【HAL库】

意法半导体更新TouchGFX软件框架,新增强大功能和支持STM32Cube的便利工具

STM32CubeMX开发工具的安装

浅析STM32 HAL固件库编程文件组织

STM32CubeMX配置工具创建了STM32微控制器 让优化MCU配置参数更加轻松

ST针对STM32微控制器推出一套免费的功能强大的设计工具及软件STM32Cube

意法半导体发布最新版的STM32Cube ecosystem Multi-OS软件

ST的 STM32Cube开发工具将支持经市场考验的STM32 F2微控制器

关于stm32CubeMX的stm32f103编程

关于stm32跑马灯的程序

意法半导体(ST)灵活便捷的STMCube软件平台帮助设计人员快速上手,支持所有量产STM32微控制器