迪文科技论坛

 找回密码
 立即注册
搜索
查看: 481|回复: 0

【分享】如何使用T5L芯片的看门狗定时器及动画显示控件

[复制链接]

0

主题

0

回帖

35

积分

新手上路

Rank: 1

积分
35
发表于 2024-12-23 18:23:40 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-7-4 10:05 , Processed in 0.032134 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表