一、按照时钟树指示(图1),如果我采用内部时钟HSI经最大的倍频PLLMUL*16后得到的SYSCLK频率应该为:(8M/2)*16=64M,Cortex系统时钟=SYSCLK/8=8M。现在问题来了,这个8M的频率是不是就是我的程序里面int main()主程序中的运行频率呢?如果是的话,我就不能理解了,我以前stm8如果用内部HSI时的main()主程序运行频率都能达到16M,为什么stm32才有8M这么低呢? 二、我自己用了个stm32f105RB作为主控,打算程序配置一下跑个8M的Cortex系统时钟。1、我把Device的器件改为STM32F105RB。2、按照“RRC.h”文件'#ifndef STM32F10X_CL ',在C/C++的Define把“STM32F10X_CL,”已添加;在编译时,如果我选择倍频为16时系统会报错。我试过只能将倍频改为9才不报错。请问一下是哪个位置没操作好呢?还是说stm32f105RB是定义为CL型互联型器件,这个器件在库上面不允许用户设这么高的倍频?如果库限制了,哪我用寄存器设行吗? |
可以参考Cubemx中时钟树的设定;多种方式生成8MHz时钟。只要HCLK是8MHz,基本上总线和外设时钟就是8MHz了。
2、用的还是老的Std库?尝试用HAL/LL库来配置代码呢?可能有些MCU固件库不支持更新了。
评分
查看全部评分
内核8M的情况下:8x9=72M
如果设置为16 ,8x16=128M,
已经超出了,所以编译出错。
评分
查看全部评分