-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 Conectivity Lineデバイスの起動コード)。ボードの水晶周波数に一致するようにsystem_stm32f10x.cを変更するだけで、main()が呼び出される前にクロックとその他の必要な初期化が設定されます。

CMSISはSTMのサイトから入手できますが、どのような場合でも使用していると思われる標準の周辺機器ライブラリに含まれていると思います。

于 2013-02-27T15:30:36.437 に答える