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

时间:2018-08-17 17:36:22

标签: embedded microcontroller stm32

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

我已使用12MHz外部晶体振荡器按照《用户手册UM1570》第6.10.1节的要求焊接了外部晶体。

配置了我的系统时钟后,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 ST-LINK接口相对,连接到USB User时,我的计算机无法识别该设备,因此我的进一步假设是时钟配置错误和缺少USB User Interface相互链接。

有人知道我的思维错误可能在哪里吗?

2 个答案:

答案 0 :(得分:0)

我已根据STM32F3DISCOVERY参考手册重新焊接了外部振荡器的无源元件。振荡器的初始化不再返回到错误处理程序中,所以我可以得出结论,这是一个简单的焊接错误,并且HSE晶体振荡器现在在所有总线上返回正确的值以操作USB,从而验证软件设置是否正确。 >

答案 1 :(得分:-1)

错误的配置

  RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS;

编辑

检查RCC寄存器是否已准备好HSE,然后打开。 enter image description here