单片机嵌入式系统软件复位的几种方式

出处:gxbgxb 发布于:2009-03-13 09:19:29

  飞思系列的8位单片机没有特定的控制寄存器可以实现软件复位,当程序运行过程中代码需要强行产生一个复位时必须通过一些软件技巧实现:

  软复位,程序从头运行,硬件不复位。复位脚无复位脉冲输出

  这可以通过直接获取复位向量的方式来实现:

  void ForceReset(void)

  {

  union {

  void (*vector)(void);

  byte c[2];

  } softReset;

  softReset.c[0] = *(byte*)0xFFFE; //get the reset vector

  softReset.c[1] = *(byte*)0xFFFF;

  softReset.vector(); //re-STart the code flow

  }

  硬复位,程序从头运行,内部所有硬件模块和寄存器同时复位,复位脚有复位脉冲输出

  这必须结合FSL 8位单片机内部的架构特点来实现:

  1)COP(看门狗)复位

  这是简单的一种方式。程序死循环然后等看门狗作用产生复位。你必须事先启动看门狗功能,复位过程将有少许延时。

  void ForceReset(void)

  {

  DisableInterrupts; //disable all interrupt

  for(;;); //wait for watch-dog reset

  }

  2)非法寻址复位

  当指令对某一个不存在的内存空间进行寻址操作时单片机会产生硬件复位。

  void ForceReset(void)

  {

  asm JMP 0xD000; //jump to illegal address will result a RESET

  }

  注意不同芯片其有效内存空间配置不同,具体地址需参考芯片数据手册做适当调整。

  3)非法指令复位

  当执行一条不存在的指令编码时单片机会产生硬件复位。这里又可以分两种手段:

  a) 利用“合法”指令在特定配置模式下的“非法性”,例如STOP指令。

  如果在芯片的配置寄存器SOPT中设定STOPE位为0禁止STOP指令,你若再执行STOP就会认为是非法指令从而立即产生复位。

  void ForceReset(void)

  {

  asm STOP; //illegal STOP will result a RESET, note SOPT_STOPE must be 0

  }

  如果你的应用中正常情况下不会用到STOP,就可以用这种方式。如果你本来就要用STOP指令就不能用这种方式产生复位,因为SOPT寄存器在复位后只能被写。

  b) 人为制造非法指令然后强行运行。

  这是比较通用的一种方法,这个S08内核系列均可适用。在单片机的指令表中确认一条不可能出现的指令编码,例如0x9E10,将其填入RAM中然后强制运行,即可立即产生复位。

  void ForceReset(void)

  {

  byte illegalCode[2];

  illegalCode[0] = 0x9e;

  illegalCode[1] = 0x10; //illegal instruction

  ((void (*)(void))illegalCode)(); //execute illegal instruction will result a RESET

  }



  
关键词:单片机嵌入式系统软件复位的几种方式单片机嵌入式系统

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

我司代理分销MOS管,单片机,电源IC,驱动IC,PD协议IC等,专业提供各种电子元器件!
广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站客服电话

0571-85317606

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!