- 博客(3)
- 收藏
- 关注
原创 STM32的启动流程和boot跳转
其实向量表的本质就是一个元素大小为4字节的数组,而这个数组里面的元素就是这些中断服务函数的名字(也就是中断服务函数的地址),而这张向量表默认就放在flash起始地址处,注意向量表的第一个存储的是栈顶指针(栈顶的地址),开发板上电复位时由CPU将这个栈顶地址赋给CPU的栈寄存器SP。4.调用__main函数,在__main函数中会把flash中的rw-data给拷贝到sram中,在__main函数的最后会调用C函数,剩下就是我们自己写的代码了。ALIGN=3:表示按2的3次方对齐,所以我们栈是8字节对齐的。
2025-08-13 22:53:14
2115
原创 C语言中变量和关键字到底是怎么一回事
1.修饰局部变量:在代码块中用static修饰的变量会延长该变量的生命周期从这个函数开始到结束到整个程序结束,至于为什么会这样看过我之前关于内存那一块的应该知道,static修饰的局部变量会将其存储的地方改变,从栈中改到bss段或者data段,这才是为什么static能够延长变量生命周期的本质原因,但毕竟还是局部变量,他的作用域还是在这个函数中,只被初始化一次。3)uint8_t *const p 表明这个p是一个常量的指针,指向的内容可以变,但指针的地址不能变(指针常量);都是修饰这个变量a是一个常数;
2025-08-09 11:26:01
1809
原创 一图看懂STM32程序的内存分布(新手向)
ZI-data Zero Initialie data 初始化为0或未初始化的数据,这些数据与RW-data的区别就是RW-data由于有值在flash中已经分配好了内存去存他,而ZI-data不需要flash为他开辟内存,直接在SRAM中运行,存在上图中的.BSS段。所以我们知道了程序在掉电和上电的时候内存分布其实是有区别的,因为flash掉电不丢失而sram掉电丢失,区别主要表现在上电后在执行main函数之前会将flash中的RW-data拷贝到sram中,并在sram中开辟bss段和堆栈的内存。
2025-08-06 23:38:00
330
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅