2025-11-08 06:24:46
STM32F103软件复位就是用代码告诉芯片自己重启,不用断电。这就像按遥控器关掉电视再重新开机一样,但操作对象是整个微控制器。具体步骤是往系统控制寄存器写特定值,让芯片自动进入复位流程。这个寄存器地址固定在0x40021000位置,写完数据后芯片会立刻重启,就像突然按了电源键一样。
为什么是这个答案?因为STM32F103的参考手册明确写了RCC_APB2PeriphResetCmd函数,这个函数就是用来向0x40021000地址写控制字的。手册说写0x00000001会让外设模块复位,写0x00000003就会触发整个芯片复位。比如当程序跑飞死机时,可以通过向这个地址写0x00000003,让芯片自动重启。数据手册P412页提到,复位寄存器占3个字节,低字节控制APB2外设,高字节控制APB1外设。所以正确写法是先写0x00000001让外设复位,再写0x00000002让其他外设复位,写0x00000003触发总复位。但实际操作中直接写0x00000003就能一步到位,就像同时按了所有遥控器按键一样。手册还特别说明,复位后所有外设寄存器都会回到默认值,就像格式化U盘一样。所以用软件复位既能快速恢复系统,又能避免硬件损坏。
本题链接: