飞卡日常进度之K60时钟

刚听说到K60的时钟时,相信你也会感觉到乱花渐欲迷人眼,无从下手的感觉,我的51不过就一个晶振而已嘛!!!(雾QAQ)


Kinetis 时钟分类

Kinetis 系列单片机,有四个时钟:内核时钟(core)、总线时钟(bus)、外部
总线时钟(FlexBus)【Flex意思是用户可配置的(或灵活的)的意思)】、Flash 时钟(Flash clock)

KL系列是没有FlexBus时钟,而且Bus时钟和Flash时钟是相等的。

这些时钟是可以设置的。
K60的在 pll_init 里面,有个设置分频的 set_sys_dividers 函数。

设置系统分频因子选项:set_sys_dividers(a,b,c,d);
那样的话, MCG=PLL:
core = MCG/(a + 1), bus = MCG/(b + 1),
FlexBus = MCG/(c + 1), Flash clock= MCG/(d + 1)

各种时钟的用途

内核时钟 ,顾名思义是cortex-M4 内核的工作频率,主要是 运算,滴答定时器,串口0、1 的工作频率
bus频率,是kinetis 的外围模块工作频率,例如 串口2~4 ,I2C ,PIT定时器。
flex bus,是芯片外围的工作频率,例如驱动 片外 SDRAM 等
flash 频率,就是 flash 模块的工作频率,代码都保存在 flash 里的。

山外K60超频

山外K60库 的超频设置非常简单,只需要修改宏定义即可,在k60_fire.h文件夹下:(新版本 5.0 在 Board/inc/FIRE_MK60_conf.h里, 5.1 在 App/inc/MK60_conf.h里)KL26 在 App/inc/MKL_conf.h
提示:超频会提高性能,但同时也会带来不稳定的情况发生。不建议超频到极限,得留一点空余,否则会出现各种莫名其妙的情况发生。

#define MCG_CLK_MHZ         PLL100      // 设置时钟频率
#define MAX_BUS_CLK         50         // bus不要超过200M,这里设为50M
#define MAX_FLASH_CLK       25          // flash不能超过32M,这里设为不超过25M

假设 CORE 频率设为 100M (上述的代码PLL100就是设为 100M),那么bus 的可选值为 100、100/2、100/3、……、100/16。
程序中#define MAX_BUS_CLK 50 就是限定 bus最大为 50M,上述的取值中符合这一条件的最大值为 100/2 = 50 ,所以bus为50M。

修改地方:
飞卡日常进度之K60时钟_第1张图片

Kinetis单片机是三级流水线,单指令周期执行。内核时钟越快,那么代码的执行速度越快。

KL26 需要配置 PLL 、CORE 、和 BUS(flash) 时钟。配置方法与K60基本相同。


参考:http://www.vcan123.com/forum.php?mod=viewthread&tid=81&ctid=1

你可能感兴趣的:(#,飞思卡尔比赛留念)