STM32F107卡在函数HAL_RCC_ClockConfig上

问题描述

我正在设置STM32F107VCT6的系统时钟,我具有25 Mhz的外部晶体,我想将系统时钟设置为72 Mhz。

数学在这里:25Mhz / 5 * 8 = 40 Mhz(使用PLL),40 Mhz / 5 * 9 = 72 Mhz(使用PLL2)。

我有以下代码调用函数STM32CubeF1版本1.8.2中的HAL):

void f107xC_clockInit( void ) {
    HAL_StatusTypeDef  ret = HAL_OK;
    RCC_OscInitTypeDef RCC_OscInitStructure;
    RCC_ClkInitTypeDef RCC_ClkInitStructure;

    RCC_OscInitStructure.OscillatorType       = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStructure.HSEState             = RCC_HSE_ON;
    RCC_OscInitStructure.HSEPredivValue       = RCC_HSE_PREDIV_DIV5;
    RCC_OscInitStructure.PLL.PLLState         = RCC_PLL_ON;
    RCC_OscInitStructure.PLL.PLLSource        = RCC_PLLSOURCE_HSE;
    RCC_OscInitStructure.PLL.PLLMUL           = RCC_PLL_MUL8;
    RCC_OscInitStructure.PLL2.PLL2State       = RCC_PLL2_ON;
    RCC_OscInitStructure.PLL2.HSEPrediv2Value = RCC_HSE_PREDIV2_DIV5;
    RCC_OscInitStructure.PLL2.PLL2MUL         = RCC_PLL2_MUL9;
    ret = HAL_RCC_OscConfig( &RCC_OscInitStructure );

    if ( ret != HAL_OK ) {
        while ( 1 )
            ;
    }

    RCC_ClkInitStructure.ClockType =
        ( RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1
          | RCC_CLOCKTYPE_PCLK2 );
    RCC_ClkInitStructure.SYSCLKSource   = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStructure.AHBCLKDivider  = RCC_SYSCLK_DIV1;
    RCC_ClkInitStructure.APB1CLKDivider = RCC_HCLK_DIV2;
    RCC_ClkInitStructure.APB2CLKDivider = RCC_HCLK_DIV1;
    ret = HAL_RCC_ClockConfig( &RCC_ClkInitStructure,FLASH_LATENCY_2 );

    if ( ret != HAL_OK ) {
        while ( 1 )
            ;
    }
}

但是,程序在调用ret = HAL_RCC_ClockConfig( &RCC_ClkInitStructure,FLASH_LATENCY_2 )时卡住了,因此时钟设置不正确。

有人可以阐明这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...