Loading

【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能有更深入的了解。

新建工程

image

project -> new project 新建空白工程后,需要设置stm32启动配置文件。不同于CubeMX自动配置,我们需要手动操作。

以下步骤为详细操作,建议直接使用我创建好的工程文件工程模板

配置启动文件

stm32的运行并非由 main.c 函数开始,而是众多 .s 文件配置中断向量表、初始化堆栈等等操作开始,最后跳转到 main 函数执行用户代码。
image

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

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

image

...待更新

posted @ 2025-04-14 22:02  CIOZ  阅读(142)  评论(0)    收藏  举报