stm32 在指定rom地址 数组_STM32第二章-启动过程详解

讲解启动过程之前先简单了解一下内存五区:1.栈区stack:由编译器自动分配释放,存放函数的参数值,局部变量的值。2.堆区heap:由程序员分配和释放,若程序员不释放,程序结束时由OS回收。3.全局区(静态区 static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量、未初始化的静态变量在相邻的另一块区域。4.文字常量区:常量字符串就是放在这里的...
摘要由CSDN通过智能技术生成

5b93f31a57054f6f6762f8779ac94868.png

讲解启动过程之前先简单了解一下内存五区:

1.栈区stack:由编译器自动分配释放,存放函数的参数值,局部变量的值。

2.堆区heap:由程序员分配和释放,若程序员不释放,程序结束时由OS回收。

3.全局区(静态区 static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量、未初始化的静态变量在相邻的另一块区域。

4.文字常量区:常量字符串就是放在这里的。

5.程序代码区 : 存放函数体的二进制代码。 话不多说先看一段代码:

int a = 0;         //全局初始化区, 可以被其他c文件 extern 引用
static int ss = 0; //静态变量,只允许在本文件使用
char *p1;          //全局未初始化区
void main(void)
{
int b;             //栈
char s[] = "abc";  //栈
char *p2;          //栈
char *p3 = "123456"; //1234560在常量区,p3在栈上。
static int c =0;         //全局(静态)初始化区
p1 = (char *)malloc(10); //在堆区申请了10个字节空间
p2 = (char *)malloc(20); //在堆区申请了20个字节空间
strcpy(p1, "123456"); /* 123456字符串(结束符号是0,总长度7)放在常量区,编译器可能会
将它与p3所指向的"123456"优化成一个地方 */
}

简单的了解了内存五区之后再来看看STM32 的启动过程。

STM32 的启动过程是指从 CPU 上电复位执行第 1 条指令开始到进入 C 程序 main()函数入口之间的部分。启动过程相对来说还是比较重要的,虽然不好理解但必须了解掌握。

  1. 不同的系列芯片的的启动代码不同。
  2. 启动过程主要完成的工作:(startup_stm32xxxx.s)

095b90a73f38146cf2385b72856a5460.png

STM32 的启动过程,启动过程是指从 CPU 上电复位执行第 1 条指令开始(汇编文件)到进入 C 程序 main()函数入口之间的部分。启动过程相对来说还是比较重要的,虽然难但必须了解掌握。

3.打开你的工程,鼠标双击工程文件。就会出来对应的.out文件查看中断向量列表在内部flash的存储。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值