-4

我已经配置了usart,但是在以下代码行中出现错误,并且我正在使用eclipse OCD进行编译,因此请建议配置时钟的正确方法。

void RCC_Configuration(void)
{
    /* error status */
    ErrorStatus HSEStartUpStatus;

    RCC_DeInit();

    RCC_HSEConfig(RCC_HSE_ON);
    HSEStartUpStatus = RCC_WaitForHSEStartUp();

    if (HSEStartUpStatus == SUCCESS) {
        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
        FLASH_SetLatency(FLASH_Latency_2);

        RCC_HCLKConfig(RCC_SYSCLK_Div1); 
        RCC_PCLK2Config(RCC_HCLK_Div1); 
        RCC_PCLK1Config(RCC_HCLK_Div2);

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
        RCC_PLLCmd(ENABLE);
        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
        while (RCC_GetSYSCLKSource() != 0x08);
    }

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
}

所以请提出答案并提前感谢

4

1 回答 1

1

您发布的代码与 USART 没有直接关系,而是整个芯片的系统 PLL 配置。

除了这个特定问题可能是什么之外,您最好使用 system_stm32f10x.c 中的标准 STM32F1xx CMSIS 启动代码,它在任何情况下都设置 PLL。startup_stm32f10x_cl.s(STM32F1xx 连接线器件的启动代码)。您只需要修改 system_stm32f10x.c 以匹配您板子的晶振频率,它会在调用 main() 之前设置时钟和其他必要的初始化。

CMSIS 可以从 STM 的网站获得,但我相信它包含在您似乎在任何情况下都在使用的标准外围库中。

于 2013-02-27T15:30:36.437 回答