|
|
本帖最后由 yxyx111 于 2024-12-23 18:30 编辑
看门狗定时器是嵌入式系统中一个非常重要的功能,它可以帮助我们在软件异常宕机后进行系统复位,避免系统在恶劣环境下长期卡死。
一、看门狗定时器简介
看门狗定时器的作用是在软件异常宕机后触发系统复位,以帮助软件重新运行。T5L芯片的看门狗定时器一旦开启,C51代码必须在溢出时间间隔内进行一次喂狗操作。T5L芯片的看门狗溢出时间间隔是固定的,不能被设置。
二、看门狗定时器操作宏定义
在sys.h头文件中,我们定义了三个宏来操作看门狗定时器:
#define WDT_ON() MUX_SEL|=0x02 //开启看门狗
#define WDT_OFF() MUX_SEL&=0xFD //关闭看门狗
#define WDT_RST() MUX_SEL|=0x01 //喂狗
三、例程设计
3.1 功能简介
我们将在外部中断0的P3.0引脚上接一个“四角轻触按键”,当按下按键时,会触发外部中断0,并在中断服务程序中进行喂狗操作。屏幕界面上主要用到一个“动画图标显示控件”,用来显示动画,表示软件处于正常运行状态。
3.2 GUI界面设计
我们使用“动画图标显示控件”来显示动画。动画播放效果可以选取任意你喜欢的动画通过pr,ps处理成素材之后可以生成icl文件来使用。
3.3 C51代码设计
#include "sys.h"
sbit KEY1 = P3^0;
void exit0_init() {
// 设置外部中断0的中断优先级为最低
IP0 &= 0xFE;
IP1 &= 0xFE;
IE0 = 0;
IT0 = 1;
EX0 = 1;
EA = 1;
}
void exit0_isr() interrupt 0 {
sys_delay_about_ms(1);
if(KEY1==0) WDT_RST();
IE0 = 0;
}
void main(void) {
u16 anim;
sys_init();
exit0_init();
anim = 0;
sys_write_vp(0x2000,(u8*)&anim,1);
sys_delay_ms(3000);
WDT_ON();
anim = 1;
sys_write_vp(0x2000,(u8*)&anim,1);
while(1) {
// 喂狗操作
}
}
四、总结
希望这能帮助到大家在嵌入式系统开发中更好地利用看门狗定时器,提高系统的稳定性和可靠性。
感谢大家的阅读,如果有任何问题或者建议,欢迎在评论区留言交流!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|