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

为何我使用cubemx配置的内部HSI 程序跑不去起来,而使用MSI...

[复制链接]
北国牧马 提问时间:2017-3-31 10:40 /

各位大神   为何我使用cubemx配置的内部HSI 程序跑不去起来,而使用MSI可以跑起来
QQ图片20170331103513.png
1 收藏 评论1 发布时间:2017-3-31 10:40

举报

1个回答
rchjbc 回答时间:2017-3-31 15:11:38
这个是CubeMX的一个bug。当配置为HSI作为时钟时,SystemClock_Config()这个函数里没有对RCC_OscInitStruct.MSIState进行赋值,这样就使用了默认值RCC_MSI_OFF。但是在随后调用HAL_RCC_OscConfig()时MSI configuration这段代码中: if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_CFGR_SWS_MSI) )
    {
                if((__HAL_RCC_GET_FLAG(RCC_FLAG_MSIRDY) != RESET) && (RCC_OscInitStruct->MSIState == RCC_MSI_OFF))
      {
        return HAL_ERROR;
      }

此时时钟源依然是MSI,因此会进入if语句,并且RCC_FLAG_MSIRDY也是置位的,两个条件与的if语句也满足,因此就return ERROR了。
修改时只需要在SystemClock_Config()函数中加上对RCC_OscInitStruct.MSIState的初始化就可以了,如下:
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_MSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
        RCC_OscInitStruct.MSIState = RCC_MSI_ON;

所属标签

相似问题

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