各位大佬好!本人最近在摸索HC32F460的使用,其中在配置HC32F460使用外部晶体作为时钟时有个奇怪的问题,让我百思不得其解。
我选用的外部晶体是12M,我程序里通过锁相环的设置让系统时钟达到200MHz。并通过MCO口的时钟输出观察设置是否正常。按道理,除了锁相环的相关设置外,我还更改了两个地方,一个是Keil工程设置里的XTAL改成了12MHz,另一处是华大库函数文件system_hc32f460.h里的宏定义语句#define XTAL_VALUE ((uint32_t)8000000),我把8改成了12。
结果程序死活配置不成功。示波器看MCO就是1M(是内部MRC的输出)。最后没辙了,我一点点往回改,终于发现,当把system_hc32f460.h里的宏定义语句改回原来的#define XTAL_VALUE ((uint32_t)8000000)后,烧写程序仿真居然对了!MCO输出实测是25MHz,正是我期望的200M锁相环时钟的8分频输出,可我明明用的是12M的XTAL啊!我反复实验了几次,确认无疑,就是这个宏定义语句#define XTAL_VALUE ((uint32_t)8000000)绝对不能改!不管你实际用的什么频率,就要写8M,才能配置成功!
这是为什么呢?求教啊!
|