首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

请问C语言的软件复位方法

当清WATCHDOG是,必须写$55和$AA到ARMCOP寄存器。如果写其他的数,芯片马上就会复位。这也就可以用作软件复位了。
海纳百川  有容乃大
SWI只是软件中断,并不能产生真正的复位,不会使MCU初始化。
海纳百川  有容乃大
软件复位恐怕没有什么更好的办法了。另外也可以用软件控制硬件,如RESET脚的方法产生复位。
海纳百川  有容乃大
这只适用于8位的HC08和S08。HC12和S12并没有非法指令复位。
海纳百川  有容乃大
对,这是一个要注意的问题。S12的WATCHDOG会产生复位,但它的中断矢量与上电复位和外部复位的中断矢量是不一样的。另外也要注意,WATCHDOG产生的复位与上电复位对某些特殊寄存器的影响可能也有所不同。
海纳百川  有容乃大
可以这样试试:

#pragma CODE_SEG NON_BANKED   //  下面代码放在NON_BANKED区
void interrupt 2  COP_RST(void)
{
    asm jmp _Startup;
}
海纳百川  有容乃大
这不是因为无法识别JMP指令,而是无法识别 _Startup。可以加这样一个说明在程序头部:

extern void _Startup(void);
海纳百川  有容乃大
返回列表