• 程序控制的软件复位方法


    微处理器复位方法:

    • 用硬件引脚RESET的复位方法;
    • 用看门狗的复位方法;
    • 自己程序控制的复位方法(本文方法,叫软件复位)

    软件复位实现方法

    1. 首先声明一个函数指针,指向复位后要开始执行指令的位置:
      void (*app_start)(void) = 0x0000;
      可以根据具体微处理器复位后的位置,修改后边的地址。

    2. 之后,在自己的程序中想复位的地方调用app_start(); 也就是跳到0x0000位置执行指令。

    3. 可以根据不同微处理器复位的地址,修改上边的地址(0x0000)。实现上你可以跳到任何位置执行,或调用函数执行。

    实例测试

    以下以Arduino为开发环境来测试。注意:在AVR微处理器中,为了使Arduino复位时不再进入引导区,使AVR设置BOOTRST设置为1。

    使用函数指针复位方法如下,你能想象到下边的程序会使LED灯闪亮吗?

    ///0. 引脚定义
    #define LED_PIN   13  //定义LED引脚为13号数据引脚(DIG13)
    static void (*reset_this_CPU)(void) = 0x0000; // ***复位本CPU函数指针
    ///1. 初始化
    void setup() {
      pinMode(LED_PIN, OUTPUT); // 初始化DIG13为输出  
      digitalWrite(LED_PIN, HIGH); //DIG13输出高电平
      delay(1000);                 //延时1秒
      digitalWrite(LED_PIN, LOW);  //DIG13输出低电平
      delay(1000);                 //延时1秒  
      reset_this_CPU(); //***跳到0x0000地址指针,也就是复位
    }
    ///2. 循环
    void loop() {
    
       //此处什么也没有啊!
    }
    

    结论

    用本方法,可以用软件方式进行复位,也可以用这个函数指针的方法调用任何函数。

  • 相关阅读:
    TP-LINK WR941N路由器研究
    thinkjs初试
    记浏览器帐号登录插件开发遇到的问题
    你被adblock坑过吗?
    web应用,我们需要了解什么?
    算法之合并排序
    算法之插入排序
    算法之初体验
    nodejs学习笔记之网络编程
    炫酷吊炸天的nodeppt
  • 原文地址:https://www.cnblogs.com/hyper99/p/cheng-xu-kong-zhi-de-ruan-jian-fu-wei-fang-fa.html
Copyright © 2020-2023  润新知