项目开发过程中需要切换时钟源,外部LSE/HSE切换到内部LSI/HSI,或者内部切换到外部。这时我们就需要用到CubeMX这个工具(安装教程请自行查找)。
下面以外部HSE、LSE切换内部HSI、LSI示例:
- 先复制CubeMX工程文件(.ioc);
- 分别放在新建的HSE、HSI文件夹中(这一步是为了等下方便对比差异);
- 打开HSE文件夹中的CubeMX工程,点击“Clock Configuration”进入时钟树管理界面;
- 打开HSI文件夹中的CubeMX工程;
①进入Pinout & Configuration界面;
②点击进入RCC配置界面;
③切换外部晶振配置为“Disable”。 - 点击“Clock Configuration”进入时钟树管理界面;
①这里可以看到外部晶振源已经被关闭;
②对比HSE和HSI两个时钟树,重点留意红框中这种外部时钟源,通过配置分频和倍频等操作,将其时钟配置成与原来HSE中一样。 - HSE和HSI两个工程都点击“GENERATE CODE”,CubeMX会在两个文件夹中生成新的工程代码。
- 使用代码对比工具(这里使用的是Beyond Compare)对比HSE和HSI两个文件夹。
- 到这里就可以看到工程切换到从外部时钟源切换到内部时钟源需要修改的地方。
- 这里主要是main.c中的:SystemClock_Config、PeriphCommonClock_Config;以及adc、tim、rtc.c中的:HAL_ADC_MspInit 会涉及到时钟配置,这里根据差异慢慢调整自己的工程即可。