由於stm32的庫默認是外部晶振8M的情況下實現的,所以配置波特率的時候也是按8M,包括主頻,如果用12M晶振就需要改動幾個地方:
在system_stm32f10x.c中找到相應類型的文件,進行如下修改。
1)72M主頻:
8M時:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
12M:
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);
2)stm32f10x.h中修改:
*#define HSE_Value ((uint32_t)12000000) /!< Value of the External oscillator in Hz /*
如果調試時遇到串口輸出不正確的時候,可以直接查看stm32的內部時鍾是多少。
舉例說明:
/*
*/
void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks);
RCC_ClocksTypeDef ClockInfo;
int main(void)
{
RCC_GetClocksFreq(&ClockInfo);
/* Infinite loop */
- 1
- 2
while ( 1 )
{
}
- 1
- 2
}
通過觀察ClockInfo這個結構體,可以清楚直觀的看到配置的內部時鍾信息。