HK32F030C8主频无法超过36MHz
原先使用的STM32030C8,代码也是用STM的时标准库写的,直接换航顺的HK32F030C8上去,程序运行到时钟配置时不行了。时钟配置代码:static void RCC_Configuration(void)
{
u16 i;
RCC_DeInit();
/*使能HSI */
RCC_HSICmd(ENABLE);
/*设置PLL时钟源及倍频系数*/
RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12); //16MHz(RCC_PLLMul_4),36MHz(RCC_PLLMul_9),48MHz(RCC_PLLMul_12)。
/*使能PLL */
RCC_PLLCmd(ENABLE);
i = 1000;
while((RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) && (--i > 0));
/*设置系统时钟(SYSCLK) */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
SystemCoreClockUpdate();
}
将RCC_PLLMul_12改为RCC_PLLMul_9或以下时,程序运行正常。RCC_PLLMul_10及以上时程序就不行了。
HK32F030C8主频无法超过36MHz
怀疑需要设置Flash_ACR寄存器,有空再试试 sp@cai 发表于 2021-1-23 17:33怀疑需要设置Flash_ACR寄存器,有空再试试
你没有设置FLASH周期, 48M 需要等待一个周期 我这边用你的代码配置出来是正常的,你可以加我微信 a13686819639 探讨。 已解决:
确实是需要设置Flash_ACR寄存器,
设置Flash_ACR寄存器的Latency为FLASH_Latency_1,程序运行正常了。
参考资料:https://bbs.21ic.com/icview-3005528-1-2.html
对于这种情况,我认为HK应该在时钟设置的章节标注一下,这样可以让用户少走很多弯路 sp@cai 发表于 2021-1-26 16:47
已解决:
确实是需要设置Flash_ACR寄存器,
设置Flash_ACR寄存器的Latency为FLASH_Latency_1,程序运行正常 ...
好的, 多谢支持 sp@cai 发表于 2021-1-26 16:47
已解决:
确实是需要设置Flash_ACR寄存器,
设置Flash_ACR寄存器的Latency为FLASH_Latency_1,程序运行正常 ...
建议开发类似stm32cube的工具了。 sp@cai 发表于 2021-1-26 16:47
已解决:
确实是需要设置Flash_ACR寄存器,
设置Flash_ACR寄存器的Latency为FLASH_Latency_1,程序运行正常 ...
这个跟flash什么关系呢 看来兼容不行呢。 库函数也是类似的吗 STM的时标准库不错呢。 时钟配置需要注意什么呢 PLL时钟源及倍频系数 以后用的时候要注意了。 为什么低频的时候没问题呢? 移植好复杂呢。 RCC时钟源是什么
页:
[1]
2