糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 华大芯片时钟调试配置记录

华大芯片时钟调试配置记录

时间:2022-11-17 00:43:20

相关推荐

华大芯片时钟调试配置记录

华大F460系列出了好几款,手里有一款HC32F460PETB系列的芯片,去年官网上面给出的例程还是2.1版本,今年再去看的时候,驱动和例程已经更新到了3.0,对比之后发现驱动部分改变还比较大,虽然本质上还是对寄存器进行配置,但是配置形式和封装,还有宏的检查上面,感觉让人理解的话,更加困难一些。根据代码能跑就不要乱动的原则,本来是不想更新的,但是2.1的时候发现一些问题,比如PA11设置为输入的时候,总是读取不到低电平;使用keil的V6.16编译器的时候,就会造成功能很v5版本的不一样,keil的V6编译器与V5相比,有多快?想必用的人都身能体会!自从更换了V6编译器,编译一遍划水3分钟的好日子就一去不复返了。所以,更新驱动库就显得迫在眉睫了。

上一篇讲述了开机启动文件,对了,从启动开始,单步调试就能知道运行流程了。华大(现在改名小华半导体)芯片启动文件详细讲解_风一样的航哥的博客-CSDN博客

今天来简单概述一下时钟的配置。能在数据手册和用户手册看到的东西就不多说了,总结起来大概就是这样子的:

首先外部高速时钟进来,通过选择器进行选择,这里选择有两个第一是外部高速时钟,第二是内部高速时钟作为PLL的时钟源,这里我们选择的是外部高速时钟,外部高速时钟进入PLL之前需要进行分频,为什么要分频呢?应该是消除外部干扰,比如8M的外部高速时钟进入后,进行8分频,这样的话就得到了1M的时钟,然后这1M的时钟再进行倍频,倍频后就得到了一个特别高速的时钟,这个时钟是无法进行使用的,因为频率太快了,所以还有进行再次的分频,分频后的时钟呢就可以作为系统时钟来使用了,系统时钟有了,我们再根据AHP和APB上外设的不同,对系统时钟进行分频处理,这样就得到了我们所需要的外设时钟了,然后根据不同的时钟进行通信。

外部高速时钟

分频

倍频

选择为系统时钟

系统时钟分频

不同的外设时钟总线再次分频

结束

今天遇到的问题是将8M晶振改为12M,因为keta开发板和petb两个开发板是不一样的。参考配置方法为:

华大hc32f460的官方板使用8Mhz无源晶振,关键点如下:

8M无源晶振配置:stcXtalCfg.enMode = ClkXtalModeOsc;

12M有源晶振配置:stcXtalCfg.enMode = ClkXtalModeExtClk;

/* Switch system clock source to MPLL. */

/* Use Xtal as MPLL source. */

/* active crystal:ClkXtalModeExtClk,passive crystal:ClkXtalModeOsc */

stcXtalCfg.enMode = ClkXtalModeExtClk;

stcXtalCfg.enDrv = ClkXtalLowDrv;

stcXtalCfg.enFastStartup = Enable;

CLK_XtalConfig(&stcXtalCfg);

CLK_XtalCmd(Enable);

以上问题解决。

配置12MHz有源晶振,具体配置总结如下:

(1)system_hc32f460.h的宏定义, XTAL_VALUE由8Mhz改为12Mhz

(2)keil工程配置XTAL改为12Mhz

(3)时钟初始化代码,stcXtalCfg.enMode = ClkXtalModeExtClk;(重点)

(4)PLL锁相环按照手册要求配置,在频率范围内

在以上重点的地方:要结合硬件电路确认是无源晶振还是有源晶振,不然就会跟我一样,调到怀疑自己。那怎么区别有源还是无源晶振呢?通常说的有源晶振叫做石英晶体振荡器。 而无源晶振称为石英晶体谐振器简称晶体。 传统的有源晶振和无源晶振非常好区分,有源晶振一般最少得有三个以上引脚:Vcc+、Vcc-和输出端。 而无源晶振只有两个引脚。

看这个晶振电路图,只有两个引脚,是无源晶振啦。要将stcXtalCfg.enMode,ll库中stcXtalInit.u8Mode,设置为CLK_XTAL_MD_OSC.

其他的分频系数,要根据自己需要进行计算。看懂用户用户手册就不难啦。

如果觉得《华大芯片时钟调试配置记录》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。