使用STM32内部HSI (内部RC振荡)作为系统时钟
在实际应用中,有时候为了节约成本,我们会能省则省,特别是当项目对成本比较敏感的时候。
本文介绍的就是如何使用内部RC时钟(HSI)作为时钟源,并且倍频到48M作为系统时钟。 这样就能不依赖外部时钟。
实际案例是通过宏定义来切换,既可以使用外部8M晶振来倍频到72M;也可以使用内部的HSI倍频到48M。
一、源码配置
1、直接进入正文,我们在文件里定义了两个“宏”,用来切换时钟配置是选内部HSI还是外部高速HSE。
代码如下:
#define SYSCLOCK_CRYSTAL_OUTSIED (0) /* 使用外部晶振 */
#define SYSCLOCK_RCCLOCK_INSIED (1) /* 使用内部RC振荡 */
/* 时钟源选择 */
#define SYSCLOCK_CHOISE (SYSCLOCK_RCCLOCK_INSIED)
2、封装使用内部RC作为时钟源,并倍频到48M的函数HSI_SetSysClock();
3、主函数里根据“SYSCLOCK_CHOISE”决定是调用内部RC还是外部晶振作为系统时钟源。
这边我们用到了串口,是为了方便输出信息进行查看。
这里也封装了个函数SYS_CLOCK_OUT用来查看系统频率信息是否真确。
代码如下:
/**
* @brief 输出系统时钟信息
*/
void SYS_CLOCK_OUT(