你的位置:首页 > 操作系统

[操作系统]程序控制的软件复位方法

微处理器复位方法:

  • 用硬件引脚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() {  //此处什么也没有啊!}

结论

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


去阳朔旅游必去景点去阳朔旅游要多少钱去阳朔旅游最佳路线去阳朔旅游最佳时间阳朔旅游线路报价2015年日历表都有哪些节日? 2015五一放假几号到几号?如何安排? 预防H7N9禽流感,饮食应注意哪些事项? 分界洲岛门票有学生票卖?多少钱? 上林霞客古渡景区一日游攻略?霞客古渡景区路线? 新兴天露山漂流节什么时候开始?天露山漂流节几号开始? 上林霞客古渡怎么坐车?霞客古渡景区坐车要多久? 霞客古渡有直达车吗?上林霞客古渡乘车路线? 三亚的淡季和旺季是什么时候? 什么时候去三亚好? 云南松赞林寺门票多少? 丽江纳西古乐好玩吗? 大理洱源西湖好玩吗? 2015深圳欢乐谷圣诞节活动夜场几点开始?深圳欢乐谷圣诞节夜场好玩吗? 2015深圳欢乐谷圣诞节儿童票多少钱?深圳欢乐谷圣诞节适合多大儿童玩? 2015圣诞节深圳欢乐谷门票多少钱?深圳欢乐谷圣诞节门票价格? 2015深圳欢乐谷圣诞节什么时间开始?深圳欢乐谷圣诞节活动什么时间结束? CY241V8ASXC-14T Datasheet CY241V8ASXC-14T Datasheet CY24271ZXC Datasheet CY24271ZXC Datasheet CY24271ZXCT Datasheet CY24271ZXCT Datasheet 牛姆林好玩吗 牛姆林好玩吗 牛姆林好玩吗 六一儿童节哪里好玩 六一儿童节哪里好玩 六一儿童节哪里好玩 珠海野狸岛好玩吗 珠海野狸岛好玩吗 珠海野狸岛好玩吗