请问,通过上述代码进入shutdown模式,偶尔会出现进入失败的情况,现象是功耗没有降下去,并且IO口没有被重置,我在进入之前进行了systick关闭和全部中断的禁用,我确认PWR->BDCR1中的PWR_BDCR1_BREN位是0,并且清除了全部的唤醒标志,还给了一定的延时。 |
IDE最新版1.17.0生成代码强制转utf8,导致中文乱码
STM32 双ADC同步注入转换模式,模块ADC2没有数据。
cubeIDE在运行时显示Failed to execute MI command是什么问题呢?
stm32cubeide编译HEX文件输出只有1k
STM32H7打开DCache后,串口1DMA接受数据位空
keil安装pack中提示Encountered an improper argument. 如何解决
stm32g474的开发板很烫
stm32cubeIDE取消usb_hid.c文件了吗?
STM32U575 LPBAM如何实现不唤醒连续读取IIC数据?
stm32g431rbt怎么显示汉字
确认一下唤醒引脚的电平是否发生变化;有没有收到外界干扰
我在猜想,会不会是程序偶尔跑飞导致进入Shutdown模式的代码没有被执行呢?
至于为什么跑飞----
使用未初始化的指针或者越界访问,导致非法内存访问?
堆栈溢出?
代码逻辑错误或未处理的异常情况,导致程序跑飞或卡死在某处?
硬件故障或电源不稳定,导致程序异常?
程序跑飞确实猜测过,不过我通过调试发现,仅在执行HAL_PWREx_EnterSHUTDOWNMode();接口函数时才可能出现问题,出现问题后CUBEIDE会提示Break at address "0xdeadbeee" with no callstack information available, or outside of program code. 目前我正在排查外部干扰等因素,也在尝试使用最小系统板进行测试。
好的,正在排查
[md]嗯 似乎提示程序运行进入了一个无效状态,更像是发生了非法访问。
可以尝试逐一停止外设,清除事件位,关闭外设,再进入低功耗模式看看
因为我是从LPBAM中中断退出,然后进行一些业务逻辑处理后再进入shutdown模式,会出现可能进入shutdown模式失败的情况,所以我着重看了LPBAM的相关内容,现已查明原因:LPBAM中我使用了两个定时器和由定时器触发的DAC,通过添加DAC关闭的代码,解决了此问题。