深入了解 DJYOS 定时器的使用:以 LcdBackLightPWM 为例

        在嵌入式系统开发中,定时器是一个非常重要的组成部分。DJYOS 作为一款优秀的操作系统,为开发者提供了强大的定时器功能。本文将以一个具体的例子——LcdBackLightPWM函数,来详细介绍 DJYOS 定时器的使用方法。

        首先,我们来看一下LcdBackLightPWM函数的实现:

u32 LcdBackLightPWM(ptu32_t Handle)
{
    static bool_t onoff = false;
    static u8 num = 0;
    num++;
    if(num <= timer_cycle_high)
    {
        Lcd_BackLight_OnOff(1);
    }
    else
    {
        Lcd_BackLight_OnOff(0);
    }
    if(num == timer_cycle)
    {
        num = 0;
    }
    return ;
}

        在这个函数中,我们定义了两个静态变量onoffnumnum用于计数,每次函数被调用时都会自增。通过判断num的值与timer_cycle_hightimer_cycle的关系,来控制Lcd_BackLight_OnOff函数的开关状态,从而实现了背光灯的脉冲宽度调制(PWM)效果。

        接下来,我们看一下LcdBackLightControl函数,这个函数用于设置和启动定时器:

void LcdBackLightControl(void)
{
    u32 IntLine = 0;
    Lcd_BackLight_OnOff(1);
    TimerHandle = HardTimer_Alloc(LcdBackLightPWM); // 分配定时器

    if ((0!= TimerHandle) && (-1!= TimerHandle))
    {
        HardTimer_Ctrl(TimerHandle, EN_TIMER_GETID, (ptu32_t)&IntLine); // 取中断号
        IntLine = IntLine >> 16;
        u32g_TimerFreq = HardTimer_GetFreq(TimerHandle);                                            // 获取定时器频率
        HardTimer_Ctrl(TimerHandle, EN_TIMER_SETCYCLE, 1 * (u32g_TimerFreq / 1000)); // 设置定时器时间为1ms
        HardTimer_Ctrl(TimerHandle, EN_TIMER_SETINTPRO, false);                                      // 设置中断属性为实时信号
        HardTimer_Ctrl(TimerHandle, EN_TIMER_SETRELOAD, true);                                     // 设置不重载,要设置重载的话第3个参数为true
        Int_SetClearType(IntLine, CN_INT_CLEAR_USER);                                               // 照抄
        HardTimer_Ctrl(TimerHandle, EN_TIMER_ENINT, true);                                          // 打开中断
        HardTimer_Ctrl(TimerHandle, EN_TIMER_STARTCOUNT, 0);                                        // 开始计数
    }
}

        在这个函数中,我们首先分配一个定时器,并通过一系列的函数调用对定时器进行设置。具体来说,我们获取中断号、定时器频率,并设置定时器的周期为 1ms,中断属性为实时信号,不重载,以及打开中断并开始计数。

        通过以上两个函数的配合使用,我们成功地实现了利用 DJYOS 定时器对液晶背光灯进行 PWM 控制的功能。

总之,DJYOS 的定时器功能为开发者提供了强大的工具,通过合理的设置和使用,可以实现各种复杂的定时任务,为嵌入式系统的开发带来了极大的便利。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值