STM32CubeMX开发实战之项目分析法则

本文通过实例介绍了如何使用STM32CubeMX创建第一个项目,详细剖析了项目架构和生成的代码,包括启动文件startup_stm32l151xb.s的功能,引导读者深入理解STM32的开发流程和代码运行机制。
摘要由CSDN通过智能技术生成

一、第一个项目

我们要建立第一个项目,这里主要是为了进行项目分析之用,让我们明白用CubeMX是如何开展工作的以及如何追踪代码逻辑。好了,废话不多说,开干。
这里我选了一款型号为STM32L151C8Tx作为例子来配置MX,如图所示。这里写图片描述
这里写图片描述
这里写图片描述
按照上图配置完成后,对MX工程进行配置,然后生成代码即可,见图。这里写图片描述
这里写图片描述
好了,不出大的意外,第一个项目已经生成。大家自行打开即可。

二、项目架构

嗯,真的简单的架构,就那么几个文件夹而已,看图。请叫我贴图王,因为我真的非常喜欢图文并茂。这里写图片描述
惊不惊喜、意不意外,这样就可以任意驰骋在STM32的海洋里了,无需管那人世间的纷纷扰扰。好了,拉回来。从图中看的确简单,但是我们还是有必要深入代码深处,逐步探究下这CubeMX生成的代码到底是怎么跑起来的。

三、深入代码

深入代码到底多深,只有自己知道,我这里权当抛砖引玉,各路高手自行进一步探究噢。我知道很多人和我一样有强迫症,第一个想看的不是main.c而是。。。。。。江湖中人人传到的汇编!在这个例子中就是startup_stm32l151xb.s。看看这名字,就知道这是个启动代码,只是后缀比较性感,是S。
写CubeMX的人还是很牛逼的,看汇编文件其实也很好看懂,不信你看。这里写图片描述
文件的开头写的很清楚就做这么几件事情。
1. 设置系统初始的SP
2. 设置系统初始的PC,PC就是reset_hanlder
3. 设置中断向量表
4. 配置系统时钟
5. 跳到C库的_main中,注意_main不是main噢
看下面的源文件内容吧,我来简要注释下。

/* 栈配置 */
; <h> Stack Configuration
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
Stack_Size      EQU     0x400    /* 设置stack大小为0x400 */

                /* 定义STACK代码段,可读写,对齐8字节 */
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
/* 分一段stack size大小的内存空间 */
Stack_Mem       SPACE   Stack_Size
__initial_sp

/* 堆配置 */
; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size      EQU     0x200

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit

                PRESERVE8
                THUMB


/* 向量表 */
; Vector Table Map
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值