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

STM32H745获取MCU重启原因

[复制链接]
E^iπ + 1 = 0 提问时间:2024-3-7 12:01 / 未解决
  1. <div class="blockcode"><blockquote>uint8 getMcuRest(void)
  2. {
  3.         if(__HAL_RCC_GET_FLAG(RCC_FLAG_BORRST) != RESET){
  4.                 LOG_INFO("// ************** RCC_FLAG_BORRST ************** // \r\n");
  5.                 return 1;
  6.         }
  7.         else if(__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET){
  8.                 LOG_INFO("// ************** RCC_FLAG_PINRST ************** // \r\n");
  9.                 return 2;
  10.         }
  11.         else if(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET){
  12.                 LOG_INFO("// ************** RCC_FLAG_PORRST ************** // \r\n");
  13.                 return 3;
  14.         }
  15.         else if(__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST) != RESET){
  16.                 LOG_INFO("// ************** RCC_FLAG_SFTRST ************** // \r\n");
  17.                 return 4;
  18.         }
  19.         else if(__HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST) != RESET){
  20.                 LOG_INFO("// ************** RCC_FLAG_IWDGRST ************** // \r\n");
  21.                 return 5;
  22.         }

  23.         return 0;
  24. }
复制代码


我通过上面的代码,获取STM32H745重启源,在测试中使用断电让MCU重启和看门狗让MCU重启的方案,但是每次获取的重启源都是RCC_FLAG_BORRST,请问是什么原因?有什么其他方案可以获取H745的重启源吗?



收藏 评论3 发布时间:2024-3-7 12:01

举报

3个回答
butterflyspring 回答时间:2024-3-7 14:18:55
这个可以从参考手册的描述中看到结果。一些默认的结果(比如BORRST等)在上电复位时必然会发生。
因此没清除必然每次都是这个结果。

如果要检测看门狗等复位源,需要先清除标志,然后再获取。

楼主的函数也应使用并行检测逻辑才比较合适。

Stm32H745 reset flag.PNG


背影101 回答时间:2024-3-7 16:50:10
[md]
背影101 回答时间:2024-3-8 08:23:57
[md]
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版