微处理器复位方法:
硬件引脚RESET复位;
用看门狗复位;
程序控制复位。
软件复位实现方法
首先声明一个函数指针,指向复位后要开始执行指令的位置:
void (*app_start)(void) = 0x0000;
之后,在自己的程序中想复位的地方调用app_start();也就是跳到0x0000位置执行指令。
可以根据不同MCU复位的地址,修改上边的地址(0x0000)。
实际上你可以跳到任何位置执行或调用相应指令或函数。
实例测试
老套路,发烟测试:以Arduino为开发环境来测试。
注意:在AVR微处理器中,为了使Arduino复位时不再进入引导区,使AVR将BOOTRST设置为1。
使用函数指针进行软件复位的代码如下,你能想象到下边的程序会使LED灯闪亮吗?