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

cubeMX生成代码8M晶振不起振

[复制链接]
tempchar 提问时间:2016-3-21 23:05 /

今天遇到个莫名其妙的问题,外部8M晶振用cubeMX生成的代码不起振。
然后我在HAL_RCC_OscConfig和HAL_RCC_ClockConfig中间加了点延迟才能起振。
系统生成的SystemClock_Config代码是这样的,我在中间加了一个 while( i < 20000) i ++ ; 才执行成功,不然就卡在函数中间出不来这里。
大家帮忙看看这是怎么回事。
是cubeMX有bug还是我的晶振的问题。


void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
  a1 = HAL_RCC_OscConfig(&RCC_OscInitStruct);

        uint32_t i = 0 ;
        while( i < 20000) i ++ ;
       
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  a2 = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);

  HAL_RCC_EnableCSS();

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  /* SysTick_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}





收藏 评论3 发布时间:2016-3-21 23:05

举报

3个回答
党国特派员 回答时间:2016-3-22 09:07:49
卡在哪一句? 2.png 3.png 4.png
tempchar 回答时间:2016-3-22 16:59:19

就知道卡在函数里执行不了,没法确定卡在那一句。
我在函数中间加个点led的语句就能起振了
党国特派员 回答时间:2016-3-22 19:26:51
可以暂停一下就可以看到停在哪里了。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版