STM32G0 MCU软件复位方式选择:NVIC系统复位VS RCC软件复位位
STM32G0软件复位:NVIC系统复位 vs 复位控制寄存器位选择
两种方式最终都能实现STM32G0的软件复位,但在实现细节和开发场景上有区别:
NVIC系统复位
一般是调用库函数(比如HAL库的HAL_NVIC_SystemReset()),底层本质也是操作寄存器,但库已经把操作逻辑封装好了。调用这个函数会触发系统复位,复位范围和外部硬件复位基本一致——除了部分备份域寄存器、调试接口(若开启)之外,所有硬件模块都会被复位。这种方式代码简洁、可读性高,适合用HAL/LL库开发的场景。复位控制寄存器软件复位位
直接操作RCC相关寄存器(比如STM32G0的RCC->CSR寄存器中的SWRST位),置位该位即可触发软件复位。这种方式没有库函数封装,需要自己手动处理寄存器的写保护(如果有),适合裸机寄存器级开发的场景,好处是减少库依赖,操作更直接。
选择建议
- 如果你用HAL/LL库开发,优先选调用
HAL_NVIC_SystemReset(),不用纠结寄存器操作细节,代码更易维护。 - 如果你是纯寄存器裸机开发,直接操作复位控制寄存器的软件复位位更高效,只要严格按照芯片参考手册的步骤执行即可。
内容的提问来源于stack exchange,提问作者sukhbir1996
相关产品推荐
相关产品推荐

