打印
[技术问答]

时钟问题

[复制链接]
386|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
看到新唐很多例子都有使能内部RC高频时钟和外部高频时钟。
然后一半都是设置内核时钟PLL,,,,
然后就是使能模块的时钟,
然而我没看到内部RC时钟和外部高频晶振时钟用哪儿了?

使用特权

评论回复
沙发
xuanhuanzi|  楼主 | 2020-6-7 16:35 | 只看该作者
有人认真推敲过这个问题吗

使用特权

评论回复
板凳
antusheng| | 2020-6-7 20:12 | 只看该作者
推敲的话,你要看这手册一步一步看了

看这两个原型。

使用特权

评论回复
地板
antusheng| | 2020-6-7 20:15 | 只看该作者

注意这个函数
    CLK_EnableXtalRC(CLK_PWRCON_OSC22M_EN_Msk);
相当于
CLK->PWRCON |=CLK_PWRCON_OSC22M_EN_Msk;
而设置HCLK的函数
CLK_SetCoreClock(PLL_CLOCK);

你看这里面就重复了,所以其实前面没有那两个好像也是可以的,不过又想想,会不会导致时钟没启动呢?不敢多想啊。哈哈

使用特权

评论回复
5
antusheng| | 2020-6-7 20:20 | 只看该作者
    CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_HIRC;
    CLK->CLKDIV &= (~CLK_CLKDIV_HCLK_N_Msk);
而紧跟着的这两句是选择HIRC作为HCLK,且不分频。

使用特权

评论回复
6
antusheng| | 2020-6-7 20:27 | 只看该作者
例子中就是设施50Mhz
紧接着就是判断外部晶振稳定没,稳定后就使能PLL,PLL的时钟源选择外部高频晶振,并将PLL设置到50Mhz
如果外部晶振不能稳定或者不可用,就设置PLL的时钟源为HIRC,内部高频振荡器。
然后就是设置PLL到HCLK
这样HCLK就设置到了50MHz

使用特权

评论回复
7
antusheng| | 2020-6-7 20:30 | 只看该作者
可以看出来这个设置有点迂回,为了稳妥
先将HCLK设置到HIRC,确保百分百能运行,这个时候HCLK还是22MHz
然后确认外部晶振是否正常运行,如果正常运行设置到外部晶振,然后设置PLL为50MHz,
如果晶振没有正常运行设置PLL时钟源为HIRC,同样设置PLL到50MHz
然后再将HCLK设置到PLL上去。

使用特权

评论回复
8
dongnanxibei| | 2020-6-7 20:40 | 只看该作者
大佬提问的不错,问题刁钻

使用特权

评论回复
9
jasontu| | 2020-6-8 09:45 | 只看该作者
上电预设就是内rc。
新唐有个clock config的工具,专门来设定ip及系统的时脉。

使用特权

评论回复
10
huahuagg| | 2020-6-8 21:58 | 只看该作者
haha,官方库函数被楼主看穿了。

使用特权

评论回复
11
huahuagg| | 2020-6-8 22:07 | 只看该作者
jasontu 发表于 2020-6-8 09:45
上电预设就是内rc。
新唐有个clock config的工具,专门来设定ip及系统的时脉。 ...

是的,那个工具越来越好用了。

使用特权

评论回复
12
xinxianshi| | 2020-6-8 22:16 | 只看该作者
非常不错,分析的挺对,学习了不少啊。

使用特权

评论回复
13
wiba| | 2020-7-6 16:44 | 只看该作者
还真是没有注意过

使用特权

评论回复
14
zljiu| | 2020-7-6 16:47 | 只看该作者
哦 原来是这样

使用特权

评论回复
15
coshi| | 2020-7-6 16:47 | 只看该作者
长知识了 呵呵

使用特权

评论回复
16
aoyi| | 2020-7-6 16:48 | 只看该作者
看的真细致啊

使用特权

评论回复
17
drer| | 2020-7-6 16:48 | 只看该作者
分析的很到位啊

使用特权

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

本版积分规则

154

主题

2079

帖子

2

粉丝