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

news/2025/10/16 8:41:53/文章来源:https://www.cnblogs.com/ljbguanli/p/19144717

完整教程:【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.mzph.cn/news/937986.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

312、金缕衣

312、金缕衣312、金缕衣 唐●杜秋娘 劝君莫惜金缕衣,劝君惜取少年时。 花开堪折直须折,莫待无花空折枝。【现代诗意译】 我劝你啊 不要看重华丽衣裳 但是 一定要珍惜 青春年少美好时光花开宜折的时候 就要立即把它摘…

使用 Visual Studio 快速创建 NuGet 程序包并发布到 NuGet 官网

前言 在前面的 .NET EF Core 快速入门实战教程章节中我们创建了一个名为 EFCoreGenericRepository 的 .NET 9 通用仓储类库,今天我们来把这个 EF Core 通用仓储类库打包成 NuGet 程序包并发布到 NuGet 官网(https://…

反配容斥

反配容斥模拟赛考了这个 trick,感觉挺牛的。 直接放题。 题意 给定一个长度为 \(n\) 的序列 \(\{ a_i \}\),令全集 \(U = \{ 1,2,3,\cdots,n \}\),定义子集 \(S\) 的权值 \(g(S)=1+\oplus_{i\in S} a_i\)。 我们称集…

怎么激活win11?笔记本重装系统后怎么激活Windows?

我可以肯定99%的人并不完全了解Windows的几种激活方式,或者知其一,不知其二。 windows10 突然右下角出现激活windows? 光广告就能搜索出一大堆,必定广告是要收费的,说明市场是有的,但我这是分享的是免费使用教程…

AVG Clear:彻底卸载AVG产品的专业工具

AVG Clear是一款专业的AVG产品卸载工具,当传统卸载方式失效时,可自动扫描并彻底删除AVG相关的文件、注册表项和安装文件,确保系统完全清理。适用于Windows 10/11系统。AVG Clear 下载 立即在作者网站下载 作者: AV…

深入解析:安卓 WPS Office v18.21.0 国际版

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

现代 PHP8+ 实战特性介绍 Enums、Fibers 和 Attributes

现代 PHP8+ 实战特性介绍 Enums、Fibers 和 Attributes PHP 一直是 Web 开发领域使用最广泛的语言之一。这些年来,它的特性不断演进,每个版本都让语言变得更有表现力、更高效、对开发者更友好。如果你一直在关注最近…

用【WPF+Dlib68】实现 侧脸 眼镜虚拟佩戴 - 用平面图表现空间视觉 - 行人-

一个精致的眼镜3D模型,在模型网站中的售价几百人民币是非常常见的,它的制作成本以及制作周期,对于实际落地的项目来说是一个非常大的阻碍。于是我尝试使用 平面眼镜图 来表现 眼镜在佩戴时的空间感 ,尤其是 侧脸 时…

比 26ai 更震撼的,是 Oracle AI 向量搜索改写的生命答案

比 "26ai" 更震撼的,是 Oracle AI 向量搜索改写的生命答案2025-10-16 08:02 AlfredZhao 阅读(0) 评论(0) 收藏 举报在 Oracle AI World 上,“26ai” 的名字成为外界讨论的焦点,引发广泛好奇与热议。 …

科学背景如何赋能云计算业务战略

本文讲述了一位神经科学博士如何将科研背景应用于云计算业务发展,通过理解科研工作者需求,帮助企业客户将研究负载迁移至云端,加速从原始数据到研究成果的转化过程。科学背景如何赋能云计算业务战略 安德烈亚皮尔斯…

.netframework中自带的dll

.netframework中自带的dllSystem.Data.OracleClient.dll .netframework中自带的dll, "C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Data.OracleClient.dll" ``

通过pypdfium2-team/ctypesgen 快速生成ctypes 代码

通过pypdfium2-team/ctypesgen 快速生成ctypes 代码以前说过ctypesgen 的作用,以下是一个简单试用 项目准备代码结构├── add.c ├── add.h ├── add.so ├── app.py ├── common.h ├── init_patch.py ├…

【GitHub每日速递 251016】23k star,Daytona:90ms内极速运行AI代码,安全弹性基础设施来袭!

原文: https://mp.weixin.qq.com/s/QkAYh9t3n41cADcQUi6FXw Daytona:90ms内极速运行AI代码,安全弹性基础设施来袭! 项目地址:https://github.com/daytonaio/daytona 主要语言:TypeScript stars: 23k仓库概述 Dayt…

用 【C# + Winform + Dlib68点】 实现静图眼镜虚拟佩戴 - 行人-

基于DlibDotNet,识别人脸68点关键点,通过眼镜标定功能,使虚拟眼镜能更自然地贴合人脸。采用.NET Framework 4.6.2开发,通过计算眼镜标定点与人眼位置的相对关系,实现眼镜对齐和缩放。关键步骤:人脸检测模型加载、…

图神经网络前沿技术与应用探索

本文深入探讨图神经网络在建模长距离依赖关系、提升计算效率以及新型因果模型方面的最新进展,涵盖算法优化、系统设计和硬件协同等多个技术层面,并介绍在知识图谱推理和多智能体系统等领域的创新应用。KDD 2023:图神…

MVCC、幻读、间隙锁与临键锁(三)

一、MVCC解决了什么问题? MVCC 解决了数据库高并发场景下的两大核心问题:读写阻塞:在传统的锁机制下,读操作可能会阻塞写操作,写操作也一定会阻塞读操作。当有大量读写操作并发时,数据库性能会急剧下降。事务隔离…

MVCC、幻读、间隙锁与临键锁

一、MVCC 解决了什么问题? 🌱 背景:并发读写冲突 当多个事务同时操作同一行时,最经典的冲突是:A 在读;B 在写;A 还没提交,B 改了数据;如何让 A 看到一致的结果?MVCC(Multi-Version Concurrency Control,多…

MVCC、幻读、间隙锁与临键锁(二)

1. MVCC 解决了什么问题? MVCC(多版本并发控制)是 MySQL InnoDB 存储引擎实现并发访问的核心机制,主要解决了读写冲突问题:在传统锁机制中,读操作需要加共享锁,写操作需要加排他锁,会导致 “读阻塞写、写阻塞读…

读AI赋能01超级能动性

读AI赋能01超级能动性1. 超级能动性 1.1. 通货膨胀已成为全球最令人担忧的问题 1.2. 科技行业仍难以摆脱广告业务放缓、投资者情绪转变以及用户参与模式变化带来的叠加影响1.2.1. 负面结果只是对科技行业在疫情期间出现…