打印
[KungFu32位 MCU]

芯旺微kf32时钟篇浅谈

[复制链接]
1655|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-8-1 17:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
芯旺微KF32系列芯片笔记
软件使用流程
首先观看手册找到时钟篇,查看时钟源详细信息。



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

点击去发现



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



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

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

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



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







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










他这里说开启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,



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

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

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



使能pll时钟

复位pll

判断pll是否产生中断锁定

根据频率来选择闪存时序



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

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



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

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



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

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

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

使用特权

评论回复
沙发
gouguoccc| | 2024-8-2 08:04 | 只看该作者
这个库函数和ST相似度太高

使用特权

评论回复
板凳
chenqianqian| | 2024-8-8 08:41 | 只看该作者
国内的MCU厂家基本上都是仿ST的库函数来写的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1751

主题

15162

帖子

10

粉丝