适用于STM32f107的ARM USART程序

时间:2013-02-27 14:53:30

标签: embedded arm usart

我已经配置了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);
}

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

1 个答案:

答案 0 :(得分:1)

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

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

CMSIS可以从STM的网站获得,但我认为它包含在你似乎在任何情况下使用的标准外设库中。