OpenEdv-开源电子网

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

STM32软件复位不成功卡死在NVIC_SystemReset(void){....__DS();while(1);}

[复制链接]

1

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2023-10-20
在线时间
4 小时
发表于 2024-12-11 14:59:27 | 显示全部楼层 |阅读模式
1金钱
大佬们,麻烦帮忙看一下stm32调用软件复位函数后,卡死在死循环while(1);中。
串口接收一个命令后,调用一下两个函数:__set_FAULTMASK(1);NVIC_SystemReset();实现软件复位,结果每次到这里都会卡死。之前用的时候不会卡死。

看到有资料说把SCB_AIRCR_SYSRESETREQ_Msk修改为SCB_AIRCR_VECTRESET_Msk可以解决复位问题,但是不明白其中原因,不敢轻易改动。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2023-9-2
在线时间
3 小时
发表于 2024-12-12 10:43:58 | 显示全部楼层
调用 __set_FAULTMASK(1) 后,系统进入了一种极度受限的状态,很多必要的中断被屏蔽,导致无法正常运行。
如果 NVIC_SystemReset() 本身需要访问被屏蔽的资源,可能会引发卡死。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-1-19 02:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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