1、

SYSCLK、AHB、APB1和APB2的時鐘頻率是在system_stm32f10x.c檔案中設定的。
#define SYSCLK_FREQ_72MHz 72000000
一、對于系統時鐘,預設情況下是在 SystemInit 函數的 SetSysClock()函數中間判斷的,而設定是通過宏定義設定的。我們可以看看 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
}
二、同時還要注意的是,當我們設定好系統時鐘後,可以通過變量 SystemCoreClock 擷取系統時鐘值,如果系統是 72M 時鐘,那麼 SystemCoreClock=72000000。
#ifdef SYSCLK_FREQ_HSE
uint32_t SystemCoreClock = SYSCLK_FREQ_HSE;
#elif defined SYSCLK_FREQ_36MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_36MHz;
#elif defined SYSCLK_FREQ_48MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_48MHz;
#elif defined SYSCLK_FREQ_56MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_56MHz;
#elif defined SYSCLK_FREQ_72MHz
uint32_t SystemCoreClock = SYSCLK_FREQ_72MHz;
#else
uint32_t SystemCoreClock = HSI_VALUE;
#endif
三、AHB、APB1和APB2的時鐘頻率是在SetSysClockTo72()函數中設定的
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK */
RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
四、最終通過IMPORT SystemInit LDR R0, =SystemInit兩條語句來運作。