总:STM32——学习总纲

一、简介

1.1 CMIS简介

所有厂家为了市场兼容性推出的标准

arm架构

1.2 HAL库简介

1.2.1 各种库优缺点

二、 STM32 Cube固件包

ST公司为CMSIS 中间层开发的pack,包含HAL。

2.1 获取方式

ST官网:st.com/content/st_com/en.html

搜索:STM32cube - 工具与软件 - Search STMicrocontrollers

 2.2 CMSIS标准软件包目录

2.3 正点原子整理的固件包

STM32F1 Cube固件包

2.3.1 两个主要文件夹内容

 2.3.2 Cube固件包Drivers下CMSIS的关键文件

2.3.2.1 Device&Include文件
2.3.2.1.1 简介

以及。。。

此未精简后11个关键文件。

2.3.2.1.2 路径

stm32f1xx.h && stm32f103xe.h :

systemxxx.h && .c:

启动文件 startup:,startup_stm32f103xe.s - F103芯片大容量256k~512K

整理的固件包中有精简版CMSIS包,只包含了用到的文件。

三、HAL库框架结构

3.1 HAL 库文件夹结构

STM32F1 Cube固件包

HAL库源码用于外设驱动,位于STM32 Cube包 Drivers文件夹下 STM32F1xx_HAL_Driver。

3.2 HAL 库文件介绍

ppp是任意外设,看成xxx易理解。

3.3 HAL 库 API 函数和变量命名规则

少数会有不符合的情况。

举例:

3.4 HAL 库对寄存器位操作的宏定义

标准库中对寄存器操作主要用 API函数,HAL 库有具体的宏定义。例如:

具体文件--》

3.5 HAL 库回调函数(callback)

3.5.1 简介

通常用法:

理解方向:C++函数重写(override),同名同参数,不同函数体。

3.5.2 中断回调函数

四、HAL 库使用

4.1 STM32开发文件结构分布

4.2 基于CMSIS应用程序文件描述

也就是ST公司STM32 Cube固件包描述

4.2.1 CMSIS 核心层

2.3.2 中的关键文件。

4.2.2  设备驱动层

主要就是HAL 库 和 LL 库 外设驱动库。

4.2.3 用户程序文件

用户配置文件需要配置。其余可删除。

4.3 HAL 库的用户层配置(STM32f1xx_hal_conf.h)

用户程序层配置用户自配置。

4.3.1 裁剪 HAL 库外设驱动源码(不进行编译)。

A、使用条件编译。

例如enable了GPIO的此宏,就是使能GPIO的驱动。

原理:在.c中使用#ifdef判断是否跳过预处理阶段

B、工程中使用什么外设就导入什么外设.c文件

4.3.2 设置晶振频率

4.3.2.1 设置外部高速晶振(HSE)频率:8MHz

4.3.2.2 设置内部高速晶振(HSI)频率:8MHz

4.3.2.3 设置外部低速晶振(LSE)频率:32.768 kHz

4.3.2.4 设置内部低速晶振(LSI)频率:40 kHz

4.4 HAL 库设备驱动层(STM32f1xx_hal.c)调用

在设备驱动层,例如 HAL_Init():

---------------------------------------------------------------------------------------------------------------------------------

五、MDK工程使用

STM32——HAL 库MDK工程创建

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐