你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F405晶体不起振

[复制链接]
月月鸟刘 提问时间:2018-10-19 15:35 /
STM32F405的一个板子,现在外接低频晶体32.768MHz用作实时时钟;还外接了25MHz晶体用作CPU主时钟晶体;现在板子焊好可以连接J-link,能够识别STM32型号,下载程序也正常,但是外接的两个晶体都不能起振,示波器测试没有波形,一直为低,请问是什么原因导致的,与程序是否有关?(现在已经换了几个晶体了,也用过12M和16M的,同样不能起振;负载电容也调整过,都不能起振;引脚测试连线没有问题,电源也正常)
收藏 评论12 发布时间:2018-10-19 15:35

举报

12个回答
wenyangzeng 回答时间:2018-10-19 16:00:47
本帖最后由 wenyangzeng 于 2018-10-19 16:02 编辑

HSE如果没有使能当然不起振了:

无标题.png

不过这个F405的LSE在CubeMX中好像使能不了,选项是灰色的。

  1. void SystemClock_Config(void)
  2. {

  3.   RCC_OscInitTypeDef RCC_OscInitStruct;
  4.   RCC_ClkInitTypeDef RCC_ClkInitStruct;

  5.     /**Configure the main internal regulator output voltage
  6.     */
  7.   __HAL_RCC_PWR_CLK_ENABLE();

  8.   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

  9.     /**Initializes the CPU, AHB and APB busses clocks
  10.     */
  11.   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  12.   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  13.   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  14.   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  15.   RCC_OscInitStruct.PLL.PLLM = 25;
  16.   RCC_OscInitStruct.PLL.PLLN = 336;
  17.   RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  18.   RCC_OscInitStruct.PLL.PLLQ = 4;
  19.   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  20.   {
  21.     _Error_Handler(__FILE__, __LINE__);
  22.   }

  23.     /**Initializes the CPU, AHB and APB busses clocks
  24.     */
  25.   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  26.                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  27.   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  28.   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  29.   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  30.   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

  31.   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  32.   {
  33.     _Error_Handler(__FILE__, __LINE__);
  34.   }

  35.     /**Configure the Systick interrupt time
  36.     */
  37.   HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  38.     /**Configure the Systick
  39.     */
  40.   HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  41.   /* SysTick_IRQn interrupt configuration */
  42.   HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
  43. }
复制代码



评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

奏奏奏 回答时间:2018-10-19 16:24:28
不起振的现象是用示波器测出来的吗?
如果是的话,先查硬件问题。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

s2333 回答时间:2018-10-19 16:29:17
会不会是system_stm32f4xx.c里面的时钟参数忘记设置了

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

jyl_518 回答时间:2018-10-19 16:34:51
PCB不良,或是焊接不良,或是晶体不良

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

月月鸟刘 回答时间:2018-10-19 18:05:56
硬件连接没问题,晶振,负载电容,串阻能换的都换了,但是还是无法起振。
月月鸟刘 回答时间:2018-10-19 18:07:16
wenyangzeng 发表于 2018-10-19 16:00
HSE如果没有使能当然不起振了:

我是搞硬件的,对于软件配置了解不多,就是需要软件相关配置,晶振才能起振吗?
wenyangzeng 回答时间:2018-10-19 20:52:56
月月鸟刘 发表于 2018-10-19 18:07
我是搞硬件的,对于软件配置了解不多,就是需要软件相关配置,晶振才能起振吗? ...

是的,楼主可以将2楼的代码运行一下试试
maxtch 回答时间:2018-10-20 11:49:05
STM32 默认上电是不启动晶振的,需要代码里面去专门开启。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

月月鸟刘 回答时间:2018-11-19 16:08:51
wenyangzeng 发表于 2018-10-19 16:00
HSE如果没有使能当然不起振了:

OK,最后发现确实是软件的问题,谢谢。
月月鸟刘 回答时间:2018-11-19 19:17:13
maxtch 发表于 2018-10-20 11:49
STM32 默认上电是不启动晶振的,需要代码里面去专门开启。

回复晚了,已经软件解决了
小灯 回答时间:2019-6-11 18:08:43
月月鸟刘 发表于 2018-11-19 16:08
OK,最后发现确实是软件的问题,谢谢。

楼主,麻烦问问软件是怎么解决的,我现在也遇到这个问题,多谢。
小灯 回答时间:2019-6-11 18:14:14
月月鸟刘 发表于 2018-11-19 16:08
OK,最后发现确实是软件的问题,谢谢。

HSE已经使能了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版