硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1776|回复: 5
收起左侧

[技术讨论] STM32软件复位不成功卡死在NVIC_SystemReset(void){....__DS();while(1);}

[复制链接]

4

主题

26

回帖

38

积分

新手上路

积分
38
发表于 2024-12-11 14:08:26 | 显示全部楼层 |阅读模式


大佬们,麻烦帮忙看一下stm32调用软件复位函数后,卡死在死循环while(1);中。
串口接收一个命令后,调用一下两个函数:__set_FAULTMASK(1);NVIC_SystemReset();实现软件复位,结果每次到这里都会卡死。之前用的时候不会卡死。

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

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-12-12 09:53:25 | 显示全部楼层
测试的那款芯片,使用最新版的CMSIS6软件包里面的NVIC_SystemReset()


https://github.com/search?q=repo ... Reset&type=code
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-12-26 18:54:40 | 显示全部楼层
楼主解决了吗?今天也遇到了这个问题。STM32F407 RTX5,在RTX5运行前调用可以直接重启,在线程中调用会进硬件错误中断。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2024-12-28 16:39:14 | 显示全部楼层
fnbb 发表于 2024-12-26 18:54
楼主解决了吗?今天也遇到了这个问题。STM32F407 RTX5,在RTX5运行前调用可以直接重启,在线程中调用会进硬 ...

把RTX5配置文件RTX_config.H里面的选项 Default Processor mode for Thread execution由Unprivileged mode改成Privileged mode就可以了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-12-29 06:50:33 | 显示全部楼层
fnbb 发表于 2024-12-26 18:54
楼主解决了吗?今天也遇到了这个问题。STM32F407 RTX5,在RTX5运行前调用可以直接重启,在线程中调用会进硬 ...

就是楼上坛友回复的情况

防不胜防,新版RTX5 V5.9.0的配置向导默认是开启非特权级模式的
https://forum.anfulai.cn/forum.p ... 4321&fromuid=58
(出处: 硬汉嵌入式论坛)

回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-12-30 09:50:57 | 显示全部楼层
hunter0773 发表于 2024-12-28 16:39
把RTX5配置文件RTX_config.H里面的选项 Default Processor mode for Thread execution由Unprivileged mod ...

非常感谢,就是这个原因。也很感谢硬汉哥的回复。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 13:21 , Processed in 0.043315 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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