历史上的今天
今天是:2025年08月14日(星期四)
2018年08月14日 | STM32 启动过程简述
2018-08-14 来源:eefocus
根据启动模式分析的结论:
1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x02000000,同时复位后PC指针位于0x02000000处;
2、 通过boot引脚设置可以将中断向量表定位于FLASH区,即起始地址为0x08000000,同时复位后PC指针位于0x08000000处;
3、 通过boot引脚设置可以将中断向量表定位于内置Bootloader区,本文不对这种情况做论述;
STM32 将0x8000000 映射到 0x00000000,即如果从内部FLASH启动,会从 0x08000004 处进行取指令 (CM3定义的 0x08000000 用于存放SP指针),故,0x00000000 与 0x8000000 内容完全相同,如下所示:
整体过程为:
①上电后硬件设置SP、跳转到 Reset_Hander
②设置系统时钟(SystemInit)
③软件设置SP
④加载.data、.bss,并初始化栈区(__main)
⑤跳转到C文件的main函数
在.s文件中,已经将中断向量表定义完整,系统会跳转到固定地址进行执行。第一条执行 Reset_handler。接着执行SystemInit设置运行时钟信息(72MHz)。
__main函数是内部的一个库函数,在此函数中调用了_scatter_load, _scatterload_null, _scatterload_copy 等函数,负责初始化堆栈,RW-DATA搬运,ZI段初始化等等操作。并最终跳转到 main 函数。
值得注意的是:Keil编译完成后:
Code:代表程序代码段
RO_DATA:代表只读数据段
RW_DATA:代表已经初始化全局数据
ZI_DATA:代表未初始化全局数据
由于程序在 FLASH 中直接通过总线进行访问,程序运行在 FLASH 上,而可更改的数据存于 SRAM 中,故:
RO_SIZE = Code + RO_DATA(占用 Flash )
RW_DATA = RW_DATA + ZI_DATA(占用 SRAM)
ROM_SIZE = Code + RO_DATA + RW_DATA ( 烧写到 FLASH 大小空间 )
针对 ZI 数据,是不存 FLASH 中,直接在 SRAM 中初始化为 0
史海拾趣
|
转载:ouravr 在2007年全国电子设计大赛的F题中,我们考虑到直流电机负载情况,认为所选电机在设计的工作模式下不会产生大于3安的电流,因此,放弃MOS管搭建H桥的常见方法,转而使用298直接驱动电机。我们采用了Ouravr邮购部购买的伺服电机,并对编 ...… 查看全部问答> |
|
目录: 第一篇 模拟电路 实验一 常用电子仪器的使用 实验二 单级低频放大器的设计、安装与调试 实验三 集成运算放大器及其应用 实验四 OTL低频功率放大器 实验五 音频功率放大器的设计、安装与调试 实验六 集成稳压电源 实验七 LC振荡器 ...… 查看全部问答> |
|
电阻是有功率限制的,假若一个50R的电阻是1/8W,那么加在他两端的电压最大不能超过2.5V,此时流过的电流为0.05A,即50mA。那么一个电路要求的输入电阻必须是50R,输入电压却超过了2.5V。而你只能选1/8W电阻,那么可以像下面这样办! ...… 查看全部问答> |
|
mini2440 ov9650 wince6.0 应用程序 采集图像花屏!!~~~~求高手解答 int rc = 0; HANDLE hCam = CreateFile (TEXT(\"CIS1:\"), GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); //打开设备句柄 if (hCam == IN ...… 查看全部问答> |
|
谁知道嵌入式精简TCP/IP协议有多大要用多大的flash/ram来存储,是不是单片机上有这个协议就可以实现网络通信了啊? 如果不行还需要什么啊?… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:04 编辑 当今绚丽多彩的家电市场,产品最受关注的卖点莫过于“智能”、“人性化”、“全自动”等。从用户的角度来看,能配上如此美名的产品,应该是用户只需按触一个“START”开关,不论具体应用的对象 ...… 查看全部问答> |
|
芯片MSP430F47197 SD16_A进行7路采样,32768晶振,OSR256,采样频率fs=32768*32/256=4096/s 采样的交流电压频率为50HZ,我的理解是每秒可采集4096个数据,而交流电每秒有50个周期, 理论上我每个周期的交流电可采集到4096/50=82个数据左右。 &n ...… 查看全部问答> |




