stm32时钟初始化过程浅析

stm32时钟初始化过程浅析

(大致梳理了一下32启动过程中时钟的初始化过程)

  • 加载main函数之前(启动代码中LDR R0, =__main之前),HCLK总线时钟默认上电是上一次断电前配置的频率
  • 加载到main时,被设定为system_stm32f1xx.c中定义的SystemCoreClock的初始值;
  • 加载到SystemClock_Config()函数时,调用了HAL_RCC_ClockConfig()函数,该函数的最后根据前面配置好的时钟源、分频等更新了SystemCoreClock的值,即更新了总线时钟(因为32要求的时钟是固定的,比如外部时钟8M,所以直接可以根据时钟源和分频确定时钟频率)
  • 正常运行,HCLK总线时钟保持这个时钟

所以说,system_stm32f1xx.c中定义的SystemCoreClock,仅仅影响初始化之初HAL_Init()中HAL_InitTick()配置的嘀嗒定时器时基,并且仅仅影响这一会,因为在HAL_RCC_ClockConfig()函数中更新了HCLK时钟之后又重新配置了时基。(原话:/* Configure the source of time base considering new system clocks settings*/)

那么问题来了,system_stm32f1xx.c中定义的SystemCoreClock有什么用呢?
只是为了在重启之后——系统时钟配置好之前为芯片提供“心跳”??(可参考:https://blog.csdn.net/caimouse/article/details/91048282

 

方法总结:

  • 不明白32的一些功能,那就从头去捋一遍噻,从启动文件开始,用上调试功能,事半功倍。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值