【STM32开发-基于标准库】学习笔记-01-概述
本文档基于STM32F103C8T6
本笔记基于 bilibili江协科技 https://www.bilibili.com/video/BV1th411z7sn
开发选择
STM32的程序开发方式主要有直接配置寄存器、标准库、HAL库、LL库四种。
标准库是在寄存器操作的基础上封装成一个个函数,兼具高效和便捷,然而官方更新的最后版本是2014年的v3.5.0,之后便不在维护。
为了方便在不同型号、不同芯片架构下统一开发,ST(意法半导体)公司重新设计了HAL库,将操作抽象成了一个个API接口,能兼容所有系列。同时提供了图形化设置极大简化了开发过程。然而正是由于冗余的设计,其运行效率和标准库以及后来的LL库相比有很大差距。
后来为了解决这个问题,ST公司又设计了LL库。它提供了大量API函数都是直接操作寄存器,所以运行效率很高。
- 寄存器
通过配置寄存器实现具体操作,复杂,使用门槛高。 - 标准库
标准库则是基于寄存器操作的库。它提供了对寄存器的简单封装,每个功能都独立封装成一个函数,功能较为单一。标准库的优势在于可以让开发者熟悉芯片的寄存器配置,但使用起来相对复杂,需要手动配置寄存器。 - HAL库
HAL库(Hardware Abstraction Layer)是ST公司为了简化STM32系列单片机之间的移植而开发的库。它提供了一组高级API,用于访问STM32微控制器的各种外设和功能,如GPIO、UART、SPI、I2C等。HAL库的设计目标是提高代码的可移植性和易用性,可以专注于功能实现,而无需深入了解底层硬件细节。但较多的函数嵌套以及结构体索引,会导致占用更多的程序空间,效率低。
| 基于寄存器 | 基于标准库 | 基于HAL库 |
|---|---|---|
| 使用十分复杂 需要查手册 | 使用较简单 将寄存器操作封装为函数 | 使用简单 可图形化操作 |
目前ST公司主推HAL库和LL库,并不再适配更新标准库。由于基于HAL库的开发通常是由STM32CubeMX图形化配置的,过于简单且无法使用在国产芯片上。而LL库比较新,资料较少,其官方手册是和HAL库手册放在一起。
通过标准库可掌握更底层的构建代码逻辑框架,对stm32能有更深入的了解。
新建工程

project -> new project 新建空白工程后,需要设置stm32启动配置文件。不同于CubeMX自动配置,我们需要手动操作。
以下步骤为详细操作,建议直接使用我创建好的工程文件工程模板
配置启动文件
stm32的运行并非由 main.c 函数开始,而是众多 .s 文件配置中断向量表、初始化堆栈等等操作开始,最后跳转到 main 函数执行用户代码。

新建Library、Start、User文件夹
将启动文件放入Start文件夹

将f10x_md.s、所有.c.h文件放入项目文件夹下


...待更新

浙公网安备 33010602011771号