本帖最后由 zitral 于 2015-2-4 09:55 编辑
使用HSI-PLL方式提供系统时钟,PLL倍频系数大于16(我用的30),我用这种方式倍到120MHZ(4*30),板子正常运行,测试发现系统时钟确实是这个频率!但是,我跑的操作系统,运行RCC_GetClocksFreq这个函数得到的各频率值是不对的!跟踪发现是在RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_30)的时候(RCC_PLLMul_30是我自己定义的#define RCC_PLLMul_30 ((uint32_t)0x08340000)),如下图,红圈部分的赋值操作很诡异!tmpreg的值是0x08340600正确,调试的时候过这一步,RCC->CFGR的值却是0x20340600,我就纳闷了!RCC_GetClocksFreq函数中要用到RCC->CFGR寄存器的值!
|