STM32F103RBT6采用外部时钟8MHz,利用软件可以将系统时钟设置为72MHz。
在启动文件startup_stm32f10x_md.s中,有这样两句话:
IMPORT __main ;从外部文件引入main函数
IMPORT SystemInit ;从外部文件引入SystemInit文件
当芯片上电复位的时候,系统调用函数SystemInit()。
调用函数SystemInit()的目的是为了调用函数SetSysClock();
static void SetSysClock(void)
{
#ifdef SYSCLK_FREQ_HSE
SetSysClockToHSE();
#elif defined SYSCLK_FREQ_24MHz
SetSysClockTo24();
#elif defined SYSCLK_FREQ_36MHz
SetSysClockTo36();
#elif defined SYSCLK_FREQ_48MHz
SetSysClockTo48();
#elif defined SYSCLK_FREQ_56MHz
SetSysClockTo56();
#elif defined SYSCLK_FREQ_72MHz
SetSysClockTo72();
#endif
/* If none of the define above is enabled, the HSI is used as System clock
source (default after reset) */
}
system_stm32f10x.c文件中定义了系统频率,如下:
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
#define SYSCLK_FREQ_24MHz 24000000
#else
/* #define SYSCLK_FREQ_HSE HSE_VALUE */
/* #define SYSCLK_FREQ_24MHz 24000000 */
/* #define SYSCLK_FREQ_36MHz 36000000 */
/* #define SYSCLK_FREQ_48MHz 48000000 */
/* #define SYSCLK_FREQ_56MHz 56000000 */
#define SYSCLK_FREQ_72MHz 72000000
#endif
因为本系统为STM32F10X_MD,所以#define SYSCLK_FREQ_72MHz 72000000。
系统频率被设置 为72MHz。