21ic问答首页 - STM32G0B1单片机进入STOP模式休眠后,唤醒无法正常启动
STM32G0B1单片机进入STOP模式休眠后,唤醒无法正常启动
程序分bootloader和app两个不分,通过bootloader可以正常跳转到app运行,app是周期性唤醒的,如果没有bootloader,直接app的起始地址是0x0800000的话,程序运行都正常,休眠后也可以通过外部中断正常唤醒;但如果是通过bootloader跳转过去,app的起始地址是0x08009000的话,程序可以正常运行,但休眠后无法通过外部中断唤醒,不清楚是否唤醒,看电流的变化是单片机起来了,但程序可能没正常执行,请教各位大佬,可能是什么原因导致的;
唤醒后,也重新指定了SCB->VTOR = APPLICATION_ADDRESS;
还有个奇怪的情况,就是如果接着串口调试助手或者烧写器,就可以正常通过外部中断唤醒运行,拿掉后,就不行了
唤醒后,也重新指定了SCB->VTOR = APPLICATION_ADDRESS;
还有个奇怪的情况,就是如果接着串口调试助手或者烧写器,就可以正常通过外部中断唤醒运行,拿掉后,就不行了

问答
赞0
是的
评论
2026-01-26
赞0
老哥还是分析的到位的,唤醒的源不对头,应该只能串口唤醒。
评论
2026-01-26
赞0
应该是没有的,如果重新设置,睡眠醒过来后怎么样也跑不起来的,我也尝试过在醒来后初始化代码前重新设置中断向量地址,也没有作用,晚点我测下是串口的哪一位引起的问题
评论
2026-01-09
赞0
评论
2026-01-09
赞0
评论
2026-01-09
赞0
串口的控制寄存器1如下所示:
如果你能不嫌麻烦,可以按下面这个方法再进一步确认一下是哪个标志位影响了?
用二分法验证会比较快:
1、用CR1=0x0000FFFF验证;
2、用CR1=0xFFFF0000验证;
这样可以确定是高16位还是低16位影响;
根据前面验证结果再用类似CR1=0x00FF和CR1=0xFF00方式进一步验证;
...
最后大概就能确定是哪个标志位影响了,先把这个找出来。
评论
2026-01-07
赞0
是的,就加这句就行,其他不做操作也正常的
评论
2026-01-07
赞0
肯定哪里有个隐藏很深的小Bug
评论
2026-01-06
赞0
那是不是把串口反初始化操作改成只有这句代码,也是正常的?
评论
2026-01-06
您需要登录后才可以回复 登录 | 注册