OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2277|回复: 4

个别板子出现:进入停机后,看门狗无法唤醒、定时器中断也无法唤醒。请问这是个别芯片的毛病吗?

[复制链接]

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
发表于 2020-2-26 09:20:03 | 显示全部楼层 |阅读模式
1金钱
每4秒左右一次停机+唤醒,不一定什么时候板子就会再也醒不来了,一般在十几分钟到十几小时不等,就会出问题。
上周也出一次问题,排查了两天原因,所有的电压都正常,发现也不是代码溢出之类或是进入硬件错误之类的问题,而是正常进入停机后无法唤醒,看门狗唤醒不了,定时器中断也唤醒不了。于是我加了一行代码,想试试wkup中断能否唤醒,代码中的wkup引脚我本身是悬空的,所以加了这几行代码与不加在代码流程上其实是一样的,于是我重新烧了一次新代码,板子竟然好了,好几天也没再出唤醒不了的问题,然后我又下载成原先的代码,依然是好的。这时我怀疑是下载代码的bug?或是个别主控芯片的bug?


昨天因为代码有几句改动,就又烧了一次代码,结果又出现唤醒不了的bug了。现在我给板子换了个主控芯片,重新烧了代码,正在测这个问题。


这种板子我做了好多块,中间长时间测试过功耗和稳定性都是随机用的某块板子,好几个月从来没出过类似问题,现在我手里就剩这一块板子了,没法换板子测试,只能换芯片了。

请问这是个别芯片的问题吗?能是啥问题呢?如果代码和板子都没问题,就是唤醒不了,可咋解决呀?

最佳答案

查看完整内容[请看2#楼]

补充一下: 由于看门狗不能唤醒、定时器不能唤醒,因此加了个WKUP唤醒,试试代码是不是连WKUP都无法唤醒。于是加了下面两句话,这时停机无法唤醒的问题复现不出来了。 __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //清除Wake_UP标志 HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN5); //设置WKUP用于唤醒 难道说停机模式需要加这个吗?我明明没用到WKUP唤醒,引脚悬空的,也不得不加HAL_PWR_EnableWakeUpPin ...
自在随心
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2778
金钱
2778
注册时间
2015-6-1
在线时间
394 小时
 楼主| 发表于 2020-2-26 09:20:04 | 显示全部楼层
本帖最后由 yuzeyuan1 于 2020-2-27 11:54 编辑
正点原子 发表于 2020-2-26 23:28
正常应该不会是硬件问题,应该是软件bug,而且是某个可能比较隐蔽的bug
如果用楼上的方法,还有问题,建议 ...

补充一下:
由于看门狗不能唤醒、定时器不能唤醒,因此加了个WKUP唤醒,试试代码是不是连WKUP都无法唤醒。于是加了下面两句话,这时停机无法唤醒的问题复现不出来了。
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);                  //清除Wake_UP标志
HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN5);           //设置WKUP用于唤醒

难道说停机模式需要加这个吗?我明明没用到WKUP唤醒,引脚悬空的,也不得不加HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN5); 吗?void Sys_Enter_StopMode(void)
{
           __HAL_RCC_PWR_CLK_ENABLE();         //使能PWR时钟
       
        __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);                  //清除Wake_UP标志
        HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN5);           //设置WKUP用于唤醒

        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);        //进入停机模式


自在随心
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-2-26 23:27:07 | 显示全部楼层
你的代码是不是比较多?
建议最小化代码试下,就是只留下换新和必要的提示代码,然后做测试,看看是否会死?
这样可以方便找是代码的问题,还是硬件问题。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-2-26 23:28:18 | 显示全部楼层
正常应该不会是硬件问题,应该是软件bug,而且是某个可能比较隐蔽的bug
如果用楼上的方法,还有问题,建议在进入待机模式之前,把部分寄存器的值打印出来,然后看下不能唤醒前的
最后一次数据,是什么样的,和之前的是否有差异?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-2-27 23:58:17 | 显示全部楼层
yuzeyuan1 发表于 2020-2-27 11:53
补充一下:
由于看门狗不能唤醒、定时器不能唤醒,因此加了个WKUP唤醒,试试代码是不是连WKUP都无法唤醒 ...

额,貌似是这样
我记得好像也要加这个,不然唤醒会有问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-25 22:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表