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

STM32CubeMX生成的工程时钟安全保护措施

[复制链接]
社区助手 提问时间:2017-6-10 21:27 /
搜狗截图20170610212221.png
搜狗截图20170610212228.png
搜狗截图20170610212242.png

如题,在配置了使用外部晶振后,有个可选项,实际情况是,不管你选不选那个保护,生成的代码时钟配置都是一样的

/** System Clock Configuration
*/
void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;

    /**Configure the main internal regulator output voltage
    */
  __HAL_RCC_PWR_CLK_ENABLE();

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

    /**Initializes the CPU, AHB and APB busses clocks
    */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

    /**Initializes the CPU, AHB and APB busses clocks
    */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)
  {
    Error_Handler();
  }

    /**Configure the Systick interrupt time
    */
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

    /**Configure the Systick
    */
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

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

不管是否勾选安全时钟保护措施,生成的代码红色部分都是一样的,实际上那样的代码是跑不动的,需要改成RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;才行,这是否是软件的bug???原来的版本没有这个问题,配置好使用外部晶振后,直接编译运行即可,现在的情况是需要手动的去修改下
收藏 评论4 发布时间:2017-6-10 21:27

举报

4个回答
zhao.zhao 回答时间:2017-6-11 13:12:20
楼主看得很仔细!我也看了看我生成的代码,也是和楼主改的一样的。是个BUG。
想想也有道理,一个芯片,要么是内部HSI提供时钟,要么是外部HSE提供时钟,但是不能两者都提供时钟,要不就会打架了,是吧?
feiante 回答时间:2017-6-11 16:08:31
你的是哪个版本的STM32CubeMX
社区助手 回答时间:2017-6-11 18:09:25
feiante 发表于 2017-6-11 16:08
你的是哪个版本的STM32CubeMX

最新的
wolfgang 回答时间:2017-6-12 09:41:07
看不全整个时钟图,应该不是这个原因,时钟配置还是有讲究的.

所属标签

相似问题

官网相关资源

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