STM32 HAL固件库编程的文件构架

  对于我这种以前只接触过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和用户自定义文件,这不管是在文件夹组织,还是在工程结构组织上都可以按照这个逻辑。

时间: 2024-11-04 21:11:46

STM32 HAL固件库编程的文件构架的相关文章

STM32 Cube固件库编程之新建工程

Cube固件库是ST现在主推的固件库,并且在它的官网已经找不到原来的标准库可供下载.Cube固件库的构架图如下 这种新式构架可以有效的加快软件工程师的工程进度. 新建一个工程项目主要包括以下的步骤: 1.使用它提供的模板或是拷贝一个现有的工程 2.加入你可能用到的middleware 3.拷贝相应的HAL及middleware的配置头文件到你的工程中 4.检查主函数中调用的HAL_Init() 5.配置系统时钟 6.初始化外围 7.这一步就是根据你的设计要求写你自己的工程了

STM32借用固件库使用外设的说明

在选择使用哪些外设的的时候,是去更改从官方模版中拷贝过来的stm32f10x_conf.h文件的27-48行,把我们要用的外围的头文件包含进来,不用的外围的头文件注释掉,但是你是否发现我们根本没有在用户主程序文件中包含stm32f10x_conf.h这个文件.那我们的修改这个文件怎么进入主程序文件的呢?答案只有一个,它包含在stm32f10x.h这个文件中,因为在用户主文件main.c中我们第一句就使用了#include "stm32f10x.h",所以应该是stm32f10x.h这个

STM32 固件库与 CMSIS 标准如何理解?

一: STM32 固件库就是函数的集合,那么对这些函数有什么要求呢??这里就涉及到一个 CMSIS 标准的基础知识,这部分知识可以从<Cortex-M3 权威指南>中了解到,我们这里只是对权威指南的讲解做个概括性的介绍.经常有人问到 STM32 和 ARM 以及 ARM7是什么关系这样的问题,其实 ARM 是一个做芯片标准的公司,它负责的是芯片内核的架构设计,而 TI,ST 这样的公司,他们并不做标准,他们是芯片公司,他们是根据 ARM 公司提供的芯片内核标准设计自己的芯片.所以,任何一个做

在IAR(EWARM)中移植STM32固件库

一.移植环境说明 (1).win10系统 (2).IAR(EWARM)7.7 (3).STM32标准固件库3.5.0 http://www.st.com/content/st_com/en/products/embedded-software/mcus-embedded-software/stm32-embedded-software/stm32-standard-peripheral-libraries/stsw-stm32054.html 二.移植步骤 (1).首先建立一个C语言的main工

STM32F1固件库文件讲解

1.文件目录 (在cmd下用"cd 文件夹" 进入到要显示的文件夹,如cd d:\en.stsw-stm32054,然后输入tree 回车就会出现上图的目录结构) Libraries 文件夹下面有CMSIS和STM32F10x_StdPeriph_Driver两个目录, 其 中CMSIS目录下面是启动文件,STM32F10x_StdPeriph_Driver放的是STM32固件库源码文件.源文件目录下面的inc目录存放的是stm32f10x_xxx.h头文件,无需改动.src目录下面放

STM32固件库3.5+uCOS2.86移植(转自暴走的工程师)

考了很多移植的资料和代码,终于移植好了...应该是完美移植吧~~哈哈哈~~ 编译环境是IAR 工程适用于STM32F10X大容量产品,如果不是,请自行修改启动文件和工程配置 编译器优化等级最高...这个你们根据需要自己调整吧... ############################################################################### 1.Jean J.Labrosse与μCOS—II μCOS—II是一个实时可剥夺型操作系统内核,该操作系统

STM32 V4.0固件库学习(一)环境准备

之前很是惭愧,写了几篇,虽然嘴上说太忙,还是懒病发作,就停了.没有养成好习惯. 还有一个想吐槽下,这个传图片好麻烦啊啊啊 估计之前也是因为这个停了... 虽然还是对之前公司的项目非常感兴趣,因为地域缘故,今年来还是换了工作,这边项目还没开始,陆陆续续到现在也有好几个月时间, 也看了很多东西.回头看看,啥记录也没有,也不知道是不是现在年纪大了,感觉啥东西也没记住.看了点啥也不知道了.这次重新下决心, 争取能够每天记录一下.最少也得把这个事情做完,以此勉励自己. 本人之前ARM7 M0 M3 430

STM32F4xx标准外设固件库

STM32F4的相关资料:http://www.stmcu.org/document/list/index/category-523 一.标准固件库简介 本文下载的是STM32F4xx_DSP_StdPeriph_Lib_V1.5.0,其文件夹如下图所示: 其中Project文件夹为各个开发环境(MDK-ARM.EWARM.TrueSTUDIO)的模板工程,Utilities文件夹为官方评估板的标准固件库应用例程,真正的标准固件库在Libraries文件夹中. 在Libraries文件夹中:CM

结构体在固件库中的应用

上次介绍了一般结构体的定义以及引用方法,那么接下来将对结构体在官方固件库是如何具体使用的做出简单说明. 结构体指针成员变量引用方法是通过“→”符号来实现,比如要访问student1结构体指针指向的结构体的成员变量name,那么方法是: stuednt1—>name; 如在STM32官方固件库中对端口使用模式结构体定义如下: typedef enum { GPIO_Mode_AIN = 0x0, //模拟输入模式 GPIO_Mode_IN_FLOATING = 0x04, //浮空输入模式 GPI