配置为使用外部振荡器的 STM32F3 设备上的 RCC 振荡器配置错误

RCC Oscillator Configuration Error on STM32F3 device configured to use external oscillator

我一直在尝试使用 STM32F3DISCOVERY 板作为基础开发 USB HID 设备,并使用 STM32CubeMX 和 HAL 库生成我的项目。

我已经按照 UM1570 用户手册第 6.10.1 节使用 12MHz 外部 crystal 振荡器焊接了外部 crystal。

配置我的系统时钟后,STM32CubeMX 生成以下行用于振荡器初始化:

RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
  _Error_Handler(__FILE__, __LINE__);
}

我的项目是在 Atollic TrueStudio 中构建的,使用 ST-LINK 接口上传和调试。我没有更改任何项目或调试的默认配置设置。调试时调用错误处理器。

我在这个阶段的假设是,由于为板载 STM32F3VC 设备提供时钟所需的 HSE 旁路,无法实现时钟配置,原因对我来说并不明显。刷机后,连接到 USB User 时我的电脑无法识别设备,而不是 USB ST-LINK 接口,所以我进一步假设时钟配置错误和缺少 USB User 接口有关彼此。

有谁知道我的思维错误在哪里?

配置错误

  RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;

编辑

检查 RCC 寄存器是否 HSE 已准备好并打开。

我已经按照 STM32F3DISCOVERY 参考手册重新焊接了我的外部振荡器无源元件。振荡器初始化不再 returns 到错误处理程序中,所以我可以断定这是一个简单的焊接错误,并且 HSE crystal 振荡器现在 returns 所有总线上的正确值都可以运行USB,验证软件设置是否正确。