学习笔记7-STM32官方库.c/.h文件功能(汇总)

本文详细介绍了STM32官方标准库的组织结构和关键文件,包括startup_stm32f10x_hd.s、system_stm32f10x.c/h、stm32f10x_conf.h、stm32f10x_it.c/h等,阐述了它们在系统启动、时钟配置、中断处理和外设驱动中的作用。同时,梳理了CMSIS和STM32F1xx_StdPeriph_Driver两个目录的内容,帮助理解STM32固件库的工作原理。

主要针对一些使用较多、但本人并不十分清楚其作用的stm32官方.c/.h文件进行系统的梳理。贴上官网标准库下载地址(操作如下图),或是直接下载这个附件在这里插入图片描述

简介

首先要搞清楚文件之间的关系。上图。

在这里插入图片描述
打开固件库文件。Libraries 文件夹下面有CMSISSTM32F1xx_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件。
Libraries
1)CMSIS存放的是符合CMSIS规范的文件。包括STM32F1核内外设访问层代码,DSP 软件库,RTOS API,以及 STM32F1 片上外设访问层代码等。
2)STM32F1xx_StdPeriph_Driver放的是 STM32F1 标准外设固件库源码文件和对应的头文件。inc 目录存放的是 stm32f1xx_ppp.h 头文件,无需改动。src 目录下面放的是 stm32f1xx_ppp.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应,每个外设对应一组文件。
***Project ***
1)STM32F1xx_StdPeriph_Examples 文件夹下面存放的的 ST 官方提供的固件实例源码,日后开发可修改这个官方提供的实例来快速驱动自己的外设。
2)STM32F1xx_StdPeriph_Template 文件夹下面存放的是工程模板。
Utilities
存放官方评估板的对应源码。

CMSIS共三层:核内外设访问层Core Peripheral Access Layer(CPAL),中间件访问层Middleware Access Layer(MWAL),设备访问层Device Peripheral Access Layer(DPAL)。
CPAL用于访问内核的寄存器和组件,如NVIC,调试系统等。
MWAL用于对中间件的访问。
DPAL用于定义一些硬件寄存器的地址和一些外设访问函数。由芯片制造商实现。
CPAL层的实现——Core_cm3.c文件,DPAL层的实现——system_stm32f10x.c文件

STM32全部的标准外设名称如下表所示。在这里插入图片描述

工程目录

比较喜欢这样建工程

1、STARTUP----启动文件
			startup_stm32f10x_hd.s
2、CMSIS------CMSIS标准文件
			core_cm3.h			      内核功能定义
			system_stm32f1xx.c		  系统,c文件
			system_stm32f1xx.h		  系统.h文件
			stm32f10x.h			      头文件
3、FWLIB------库文件
			misc
### 链接器脚本语法错误解决方案 当遇到 `ld.exe` 报告关于 `STM32F103C8Tx_FLASH.ld` 的语法错误时,可以按照以下方法排查和解决问题。 #### 检查链接器脚本文件路径 确保使用的链接器脚本文件路径正确无误。如果路径中有特殊字符或者空格,可能会导致解析失败。建议使用绝对路径来指定链接器脚本的位置[^1]。 #### 审核链接器脚本内容 仔细审查 `STM32F103C8Tx_FLASH.ld` 文件的内容,特别是定义内存区域的部分。常见的错误包括拼写错误、缺少分号或逗号等符号以及不匹配的大括号。对于 STM32F103 系列微控制器而言,典型的内存布局如下所示: ```linker-script MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 128K /* Flash起始地址及大小 */ RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K /* SRAM起始地址及大小 */ } ``` 上述配置适用于具有 128KB flash 和 20KB sram 的 STM32F103C8 芯片型号[^2]。 #### 更新工具链版本 有时旧版本的 GNU 工具链可能存在 bug 或者对某些特性支持不足,尝试升级至最新稳定版的 GNU Tools for STM32 可能会修复已知问题并提高兼容性。 #### 使用官方模板 参考 ST 提供的标准项目结构和默认设置,在线获取最新的工程模板可以帮助避免自定义过程中引入的人为失误。可以从官方网站下载对应系列处理器的应用笔记和技术文档作为指导材料。 #### 向社区求助 如果经过以上步骤仍然无法定位具体原因,则可以通过访问开发者论坛如 Stack Overflow 或是国内的技术交流平台寻求帮助。提供详细的报错信息有助于他人更快地理解情况并给出针对性解答。 ```bash # 示例命令用于编译 MicroPython 并指定板级参数 cd mpy-cross && make clean && make cd ../ports/stm32 && make clean && make BOARD=PYBV10 UART_REPL=1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChristianLuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值