at32f415,我计划使用hsi配置时钟144mhz。但是使用了下面的程序后,usart波特率配置实际值高1倍。比如我把波特率设置成57600,但是上位机串口助手里必须设置成115200才能正确接收。请问我这段时钟配置程序错误在哪里?
RCC_Reset();
RCC_HSICmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_HSISTBL) == RESET)
{}
/* Enable Prefetch Buffer */
FLASH->ACR |= (FLASH_ACR_PRFTBE);
/* Flash wait state */
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)(FLASH_ACR_LATENCY_4);
RCC_AHBCLKConfig(RCC_SYSCLK_Div1); //at32f415的AHB最高150M
RCC_APB1CLKConfig(RCC_AHBCLK_Div2); //at32f415的APB1最高75M
RCC_APB2CLKConfig(RCC_AHBCLK_Div2); //at32f415的APB2最高75M
RCC_PLLConfig(RCC_PLLRefClk_HSI_Div2, 36, RCC_Range_GreatThan_72Mhz); //hsi作为pll输入前,先经过了6分频
RCC_PLLFrefTableConfig(8000000);
RCC_PLLCmd(ENABLE); //启动PLL
while (RCC_GetFlagStatus(RCC_FLAG_PLLSTBL)==RESET) {} //等待PLL启动完成
RCC_StepModeCmd(ENABLE); //大于108MHz时,平滑功能开启
RCC_SYSCLKConfig(RCC_SYSCLKSelction_PLL); //配置系统时钟
while (RCC_GetSYSCLKSelction() != 0x08) {} //检查是否将PLL作为系统时钟
RCC_StepModeCmd(DISABLE); |