运行指示灯复用故障显示

本文介绍了嵌入式产品中利用运行指示灯进行故障检测的方法,当产品正常运行时,指示灯亮灭周期为2000ms;故障时,指示灯按故障码次数闪烁。给出了LED_Test_Event函数的实例代码,展示了如何在1ms定时器中断服务中控制灯的亮灭和闪烁。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.工作原理

嵌入式产品一般设计的都有运行指示灯,一方面是为了让使用者看到产品运行状态,另一方面如果产品发生了故障,可以直观的通过运行指示灯观察到。本文介绍的方法,产品正常运行时运行指示灯亮灭周期是2000ms(亮1000ms灭1000ms),发生故障时,持续闪烁故障码次数(如果闪烁次数>=故障码,则下个循环周期重新闪烁),比如故障码(1 2 3 4 5 6 7 8 9 10等)。SysTimer.Ledtimer在1ms系统滴答定时器中断服务函数中自增。

2.实例代码

void LED_Test_Event(u8 troublecode )
{
    if(troublecode)
    {
        static u8 led_flash_cnt=0;
        if(led_flash_cnt>=troublecode)
        {
            if(SysTimer.Ledtimer>=1500)
            {
                SysTimer.Ledtimer=0;
                led_flash_cnt=0;
            }
        }
        else
        {
            if(LED_Sta_Read())
            {
                if(SysTimer.Ledtimer>=30)//亮
                {
                    SysTimer.Ledtimer=0;
                    Led_Off();
                    led_flash_cnt++;
                }
            }
            else
            {
                if(SysTimer.Ledtimer>=300)//灭
                {
                    SysTimer.Ledtimer=0;
                    Led_On();
                }
            }

        }
    }
    else
    {
        if(SysTimer.Ledtimer>=1000)
        {
            SysTimer.Ledtimer=0;
            Led_Reverse();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值