/*****************************************關於時鐘:system_stm32f10x.c中有如下說明*******************************************/
//STM32的4類時鐘:
//外部時鐘HSE:高速外部時鐘信號,精度高。來源:(1)HSE外部晶體/陶瓷諧振器(晶振) ;(2)HSE用戶外部時鐘
//外部時鐘LSE:低速外部晶體 32.768kHz 主要提供一個精確的時鐘源 一般作爲RTC時鐘使用
//內部時鐘HSI:高速內部時鐘信號,stm32單片機內帶的時鐘 (8M頻率)精度較差
//內部時鐘LSI:LSI是低速內部時鐘,RC振盪器,頻率爲40kHz。
//ST官方推薦的外接晶振(HSE)是 8M,所以庫函數的設置都是假定你的硬件已經接了 8M 晶振來運算的。
// #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
//所以系統時鐘爲72M
// static SetSysClockTo72(void)函數中配置瞭如下內容:
// RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
// RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
// RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
// 對?這段代碼進行解析:
// 具體的寄存器含義可以參看stm32f10x數據手冊的第63頁。下面只做簡要說明。
// RCC_CFRG爲時鐘配置寄存器。
// HPRE爲AHB預分頻,確定AHB的時鐘;
// PPRE1爲APB1的預分頻,確定低速APB的時鐘;
// PPRE2爲APB2的預分頻,確定高速APB的時鐘;
// system_stm32f10x.c 中函數 static void SetSysClockTo72(void)中有:
/* HCLK = SYSCLK */
// RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
/* PCLK2 = HCLK */
// RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
/* PCLK1 = HCLK/2 */
// RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
//
//所以: AHB (HCLK) 時鐘 = 72M;
// APB2(PCLK2)時鐘 = 72M;
// APB1(PCLK1)時鐘 = 36M;
//而後其他外設的時鐘分別再AHB、APB1、APB2等總線上,故可確定外設的時鐘。
/*********************************************END OF RCC ****************************************************************************/