电子工程师技术服务社区
- 社区首页
- 下载
- 解析 STM32 的启动过程.pdf
资料描述
system文件部分(一)
先让我把这个图记一下(以后提醒自己多用堆栈窗口和内存窗口调试程序)
启动代码:
原子哥教程里面看到这句话,刚好有这方面的资料,资料对startup_stm32f10x_hd.s里面的200多行的汇编代码进行了详细的讲解,附件在底下,强烈建议看一下!
时钟树:经常要去找挺麻烦的,贴上以后直接在这看了
hse时钟
高速外部时钟信号(hse)由以下两种时钟源产生:
● hse外部晶体/陶瓷谐振器
● hse用户外部时钟
为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠
近振荡器引脚。负载电容值必须根据所选择的振荡器来调整。
hsi时钟
hsi时钟信号由内部8mhz的rc振荡器产生,可直接作为系统时钟或在2分频后作为pll输入。
hsi rc振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比hse晶体振
荡器短。然而,即使在校准之后它的时钟频率精度仍较差。
pll
内部pll可以用来倍频hsi rc的输出时钟或hse晶体输出时钟。
pll的设置(选择his振荡器除2或hse振荡器为pll的输入时钟,和选择倍频因子)必须在其被激
活前完成。一旦pll被激活,这些参数就不能被改动。
如果pll中断在时钟中断寄存器里被允许,当pll准备就绪时,可产生中断申请。
如果需要在应用中使用usb接口, pll必须被设置为输出48或72mhz时钟,用于提供48mhz的
usbclk时钟。
lse时钟
lse晶体是一个32.768khz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供
一个低功耗且精确的时钟源。
lse晶体通过在备份域控制寄存器(rcc_bdcr)里的lseon位启动和关闭。
在备份域控制寄存器(rcc_bdcr)里的lserdy指示lse晶体振荡是否稳定。在启动阶段,直
到这个位被硬件置’1’后, lse时钟信号才被释放出来。如果在时钟中断寄存器里被允许,可产
生中断申请。
lsi时钟
lsi rc担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和
自动唤醒单元提供时钟。 lsi时钟频率大约40khz(在30khz和60khz之间)。进一步信息