[KungFu32位 MCU] 芯旺微kf32时钟篇浅谈

[复制链接]
 楼主| 发表于 2024-8-1 17:11 | 显示全部楼层 |阅读模式
芯旺微KF32系列芯片笔记
软件使用流程
首先观看手册找到时钟篇,查看时钟源详细信息。

9289766ab5129dfb03.png

2.通过观察sysinit.h文件函数发现systeminit是配置时钟初始化

点击去发现

8273966ab5122ce2c9.png

3.此函数间接调用SetSysClock(SCLK_Value);传入时钟频率,参数是uint8类型的,猜测是传入72,48,120等频率数值来初始化时钟,点进去看看。

7796366ab511b2a6e4.png

看头俩个参数应该是打开内部高速,低俗时钟,flash这个应该是配置一个闪存时序,这里不管他

继续分析他这里说set the inthf,说的应该是内部高速时钟1分频,下一个函数应该是设置时钟源为内部高速时钟

然后这里是把一个数值赋给函数开头创建了uint32的变量让它减减- -,然后循环获取标志位?,没太懂什么意思点进去看看。

5831966ab511331b26.png

俩个参数与等于,它说pll锁定或未锁定进去看看

6529166ab510ca6cdc.png

4342466ab50fe2f04e.png

7344766ab50f71c0e1.png

找到他说的位置了这个地址偏移了0x008再找找寄存器干啥

7645966ab50ecc9fac.png

8449466ab50e552de2.png

3448066ab50da5267d.png

670066ab50d3a16fe.png


他这里说开启bkp区域这个备份的话应该在复位时候才会重置,掉电不会重置

ASM结尾的是汇编,先不管它

#ifdef SYSCLK_FREQ_HSI
   OSC_PLL_Input_Source_Config(PLL_INPUT_INTHF);
//这里如果定义了内部hsi的话就把pll的基准时钟来自PLL_INPUT_INTHF
//OSC_SCK_Source_Config(SCLK_SOURCE_EXTHF);
//OSC_PLL_Input_Source_Config(PLL_INPUT_EXTHF);
//否则它把时钟源切到外部来了,有点意思
大致捋一下如果是内部就像上边注释写的一样定义了内部hsi的话就把pll的基准时钟来自PLL_INPUT_INTHF

外部的话就设置了h口的11引脚为输入模式,开启外部高速时钟,设置高速延迟传入65536,然后和上边一样赋值给那个变量让它减减,判断是否稳定,稳定了就设置外部高速时钟为时钟源并把他给pll,

2450766ab50c906443.png

判断传入的频率是否在这区间,这个数组参数pll的倍频,分频值等信息

判断是否为hsi是就开启pll延迟

判断如果是外部时钟是8m还是16m根据情况开启pll延迟

7088166ab50bd79cc4.png

使能pll时钟

复位pll

判断pll是否产生中断锁定

根据频率来选择闪存时序

1694766ab50b4267ec.png

这里保存了某个寄存器状态,前边这些c语言加汇编做的事不谈了,主要说一下时钟这块

OSC_SCK_Division_Config(SCLK_DIVISION_4); // 配置系统时钟分频为4
OSC_SCK_Source_Config(SCLK_SOURCE_PLL); // 配置系统时钟源为PLL

5724866ab50a8029b1.png

这里一直在分频延迟不清楚在做什么最后又恢复过来了判断了一个状态

我去看看他判断什么状态,大致看了一下没看懂不太懂汇编猜测是pll寄存器

2045066ab50a0b3491.png

最后使能外部高速时钟,配置低速时钟为内部,使能内部低速,关闭备份bkp;
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_46157283/article/details/140271568

发表于 2024-8-2 08:04 来自手机 | 显示全部楼层
这个库函数和ST相似度太高
发表于 2024-8-8 08:41 来自手机 | 显示全部楼层
国内的MCU厂家基本上都是仿ST的库函数来写的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2323

主题

17435

帖子

21

粉丝
快速回复 返回顶部 返回列表