当前位置: 首页 > news >正文

完整教程:【stm32】cube固件解析和放入工程(HAL_F4)

完整教程:【stm32】cube固件解析和放入工程(HAL_F4)

首先cmd中运用命令生成文件夹方便观看

tree /f /a > tree.txt

生成的有60000多行,不要用/f就只有文件夹

_htmresc一般这个名就是图片资源和html等,不管

文档。就是Documentation就不管

Projects存放官方献出的示例工程,包含各种外设的应用模板和复杂应用。参考使用。

Drivers存放最核心的底层驱动,包括CMSIS内核文件、MCU外设驱动等。这是每个工程都必须的。

Middlewares存放中间件,即一些功能丰富的软件库,如ST自家的USB驱动、第三方操作系统FreeRTOS、网络协议栈LwIP和文件系统FatFs等。按需取

Utilities包含针对ST官方评估板(开发板)的特定代码(如BSP驱动)和资源。不管

详细看Drivers文件夹

xx_HAL_Drvicer文件夹

一个就是.xxx.chm文件经过编译的HTML帮助文件,它包含了xxx系列微控制器的完整技术参考手册。你可以把它理解为ST官方为开发者准备的“产品说明书”或“制作指南”。双击打开。数据手册首要服务于硬件工程师,而用户手册(.chm)主要服务于软件工程师

CMSIS

CMSIS - Cortex微控制器软件接口标准。这是由ARM制定的通用标准,确保了不同芯片厂商的Cortex-M内核单片机在软件层面有一定的兼容性。你可以把它理解为计算机的"主板和CPU的基本驱动"。

Documentatioin/不用想

Include/ 文件和Core/Include/下面全部一样

Core/ - 与芯片无关的纯内核支持

Device/

Device/ST/STM32F4xx/ - ST公司为STM32F4系列添加的设备特定支持,其中include/下要复制到工程中(可以要哪个芯片用哪个)source/文件夹下的有对应arm,gcc,iar三个环境的启动文件(启动文件可以自己用c语言写,不难,自己写可以和平台初始化记录放一起)。

  • 启动文件 (startup_stm32f4xxxx.s):这是芯片上电后运行的第一段代码。它包含了堆栈初始化、中断向量表(告诉你发生某个中断时该跳转到哪里去执行)、以及最终调用 main 函数的复位程序。这是不可或缺的

  • 系统初始化文件 (system_stm32f4xx.c):包含 SystemInit() 函数,在启动文件里被调用,用于初始化芯片的时钟系统(设置PLL,配置HCLK, PCLK等),让CPU和外设运行在正确的频率上。这个文件的头文件在core/ 下面源文件是在source/下面。

  • 内核相关头文件:如 core_cm4.h,定义了Cortex-M4内核的寄存器、NVIC(嵌套向量中断控制器)、SysTick(系统定时器)等的访问方式。在 core/ 或者Include/

  • 设备特定头文件 (stm32f4xx.h):这是最重要的设备头文件。它包含了你的STM32F4型号的所有外设寄存器定义(即,每个寄存器地址的宏定义)。当你写 GPIOA->ODR = 0xFFFF; 时,其实就是这个文件定义了 GPIOA 和 ODR。在include/

DSP/ - 数字信号处理库 (可选)

作用:提供Cortex-M4内核DSP指令集的软件接口,让你能用C语言轻松调用底层硬件加速功能。

RTOS/ - 实时操作系统接口 (可选)

CMSIS-NN (神经网络库)

CMSIS-DAP (调试访问端口)

开源的JTAG/SWD调试器固件,用于连接电脑和目标MCU,你观察过H7的是没有这个的,拥护基于Cortex-M0/M3/M4,因为这个给做调试器的MCU用的。

构建自己的Project

cmake或者make,要额外有交叉编译工具和CMakeLists.txt文件,还要自己搞研发环境。不过我写了对应文章并开源工程模版提供使用。就是这里只说明用什么库,不说明用什么方式,因为我肯定用的

一个基本的stm32工程需的库了。这样有什么好处?就是首先就是ST的第三方库,把CMSIS的Include/和Device/,还有STM32xxxx_HAL_Driver/。只要这三个就

可以多个添加Device/ST/下的文件夹,比如同时有f4和f1和h7,STM32xxxx_HAL_Driver/。甚至可以添加非ST的芯片,比如我用了Generic未知/裸机系统嵌入式、RTOS、裸机研发,这时候就可以通过配置cmake管理配置选项搞大型工程。

http://www.rkmt.cn/news/22013.html

相关文章:

  • 怎么激活win11?笔记本重装系统后怎么激活Windows?
  • 现代 PHP8+ 实战特性介绍 Enums、Fibers 和 Attributes
  • php 1026
  • 比 26ai 更震撼的,是 Oracle AI 向量搜索改写的生命答案
  • 通过pypdfium2-team/ctypesgen 快速生成ctypes 代码
  • 用 【C# + Winform + Dlib68点】 实现静图眼镜虚拟佩戴 - 行人-
  • MVCC、幻读、间隙锁与临键锁
  • 读AI赋能01超级能动性
  • SGD 到 AdamW 优化器的实践选型指南
  • # TLP电池管理工具:Linux笔记本续航优化的终极指南
  • AI中间件机遇与挑战:从Agent到组织级智能的技术演进
  • # Redis日常使用与性能排查指南
  • 二手车检查
  • 10.15 闲话
  • 2023 ICPC Xian
  • 牛客119232 牛客2025秋季算法编程训练联赛1-提升组 游记
  • Nginx 之Rewrite 使用详解
  • Aexlet-VGG2
  • 科学与社会研讨课笔记
  • 公众号排版用什么好?一次技术视角的系统拆解:效率、兼容与智能协同
  • json请求字符串格式化或使用转义字符
  • C++_设计模式
  • 数据库查询通信开销降低97%的技术方案
  • 差分操作正确性证明
  • CF2143D2
  • 【训练技巧】PyTorch多卡训练模型DistributedDataParallel和DataParallel设置方法详解及分布式训练命令解释 - 实践
  • C++篇:007
  • C++篇:006
  • C++篇:004
  • 轻量级ChatGPT克隆版nanochat技术解析