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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版