STM32定时器时钟配置问题说明SystemCoreClock

在研究STM32L476的通用定时器时,遇到了一个关于SystemCoreClock值=4000000U的问题,琢磨了好久,终于弄明白了,这里记录一下。

1、定时器初始化函数中

2、其中的SystemCoreClock是在system_stm32l4xx.c文件中定义的一个变量

3、其实这个值在此处只是一个变量定义时的初始值,系统在时钟初始化时会使用上面的方法3进行更新的。在SystemClock_Config中会调用HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3)函数更新系统时钟。

4、在HAL_RCC_ClockConfig

5、在HAL_RCC_ClockConfig函数中同样会初始化系统Tick时钟

6、初始化SYSTICK为SystemCoreClock/1000,然后在HAL_RCC_ClockConfig还会再次初始化SYSTICK时钟,当然有的也在HAL_InitTick函数中直接进行初始化

7、在其中的HAL_RCC_GetHCLKFreq()函数中获取系统的时钟参数

系统时钟SystemCoreClock在前面已经更新。整个过程及更新了SystemCoreClock,又更新了SYSTICK,保证了即使修改主时钟频率时,SYSTICK的1ms也是不变的。

 

 

 

  • 23
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值