2013-02-27 67 views
-4

我已经配置了usart,但我在下面的代码行中出现错误,并且我正在使用eclipse OCD进行编译,所以请建议正确的方法来配置时钟。ARM USART program for STM32f107

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

你得到的错误是什么?哪一行出现错误(您的文章包含多行)? – 2013-02-27 15:05:09

+2

你可能会相信[The Guru Myth](http://www.toomuchcode.org/2008/11/guru-myth.html)。 – Clifford 2013-02-27 15:08:09

+0

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); – sHamiR 2013-02-27 15:10:06

回答

1

您发布不直接相关的USART的代码,而这是整个芯片系统PLL配置。

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

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