[STM32F0] PLLRDY标志位无法置位

[复制链接]
 楼主| 石榴大王 发表于 2025-7-4 14:14 | 显示全部楼层 |阅读模式
PLL, rc, ST, SC, ni
使用HSI或HSE的PLL功能来提高时钟速度。PLLRDY标志位始终无法置位。进入硬错误状态并需要复位。
开发环境:STM32CubeIDE
微控制器:STM32F070CB
已尝试的解决方法:
  • 查到资料提到必须在开启PLL前更改Flash延迟。我已尝试手动切换至模式0和模式1
  • 使用HSI和HSE作为PLL源。通过示波器确认HSE信号正常,但两者均无效
  • 擦除芯片并重新烧录全新的PLL代码
  • 在时钟配置选项卡中使用多种不同的PLL倍频器配置等组合
  • 直接使用参考手册第732页提供的示例代码(针对该型号微控制器)
  • 在两块不同的微控制器上测试
  • 在评估板上测试时PLL可正常工作(最高可达48MHz)
  • 每次执行__HAL_RCC_PLL_ENABLE()都会导致程序崩溃

以下是我的配置代码:
void SystemClock_Config(void){  RCC_OscInitTypeDef RCC_OscInitStruct = {0};  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};   /** Initializes the CPU, AHB and APB busses clocks   */  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;  RCC_OscInitStruct.HSIState = RCC_HSI_ON;  RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;  RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)  {    Error_Handler();  }  /** Initializes the CPU, AHB and APB busses clocks   */  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK                              |RCC_CLOCKTYPE_PCLK1;  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)  {    Error_Handler();  }  HAL_RCC_MCOConfig(RCC_MCO, RCC_MCO1SOURCE_SYSCLK, RCC_MCODIV_1);}
LOVEEVER 发表于 2025-7-29 23:56 | 显示全部楼层
有点混乱
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部