0
点赞
收藏
分享

微信扫一扫

嵌入式八股文7

STM32启动流程

 (1) 上电复位,硬件设置 SP、PC 的值   (0x0800 0000读取sp的值  0x0800 0004读取pc的值)


 (2) 找到了 Reset_Handler 的地址后,CPU 就从这里开始取指令运行程序;


(3)Reset_Handler调用SystemInit完成时钟、中断向量偏移的初始化工作,然后跳转到__main,__main函数会完成RW、ZI数据段的重定位工作,即将ROM中的RW数据拷贝到RAM中,将ZI段清零,然后跳转到_rt_entry进行Stack和Heap的初始化。

ROM占用大小等于RO SIZE + RW SIZE


RO SIZE   等于 code + RO data


RW SIZE  等于 RW data + ZI data


RW data 是初始化不为0的全局变量和静态变量


ZI   data 是没初始化/初始化为0的全局变量和静态变量  +  堆区(0.5kb)  + 栈区(1kb)


STM32中startup.s文件

设置栈的大小  默认为1kb

设置堆的大小,默认为0.5kb

设置中断向量表

复位程序

中断服务函数

堆栈初始化

ARM R13 R14 R15分别是什么?  

R13属于是SP寄存器 R14属于是LR寄存器  R15属于是PC寄存器


STM32有几个时钟源?

STM32有五个时钟源:HSI,HSE,LSI,LSE,PLL


①、HSI是高速内部时钟,RC振荡器,频率为8MHz,上电后默认的系统时时钟 SYSCLK = 8MHz,Flash编程时钟。


①、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。


③、LSI是低速内部时钟,RC振荡器,频率为40kHz,可用于独立看门狗IWDG、实时时钟RTC。


④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。


HSE:外部晶振STM32F103C8T6默认是8Mhz (4Mhz~16Mhz)

举报

相关推荐

0 条评论