问题描述
我正在设置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 (将#修改为@)