打印

【RL78-G15】03 非阻塞闪灯(定时器中断方式)

[复制链接]
372|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 qintian0303 于 2024-12-6 22:37 编辑

       进行LED的闪灯操作还有一种方式,就是通过定时器产生中断,然后在中断程序中进行LED翻转,这个是不是有点像前两篇的结合,实现的是闪灯的效果,通过的是中断的方式。
       定时器属于MCU内部的功能,这一部分不涉及硬件配置,我们之间添加定时功能模块:
   

       间隔定时器会每隔一段时间产生一个中断;
   

       可以选择计数模式:8位、12位、16位;
   

       上图展示的就是定时器的基本配置,注意单片机的主频只有16M,单片机是个16位的单片机,如果你的定时时间比较长的话就要分频大一点,注意这里的中断都是分开管理的;
   

       这里对应的就是我们新生成的定时器相关文件,我们可以在Config_TAU0_1_user.c中进行中断处理:
void r_Config_TAU0_1_interrupt(void)
{
    /* Start user code for r_Config_TAU0_1_interrupt. Do not edit comment generated here */
    timercnt++;
    if(timercnt >= 100)
    {
        PIN_WRITE(2,0) = ~PIN_READ(2,0);
        PIN_WRITE(2,1) = ~PIN_READ(2,1);
        timercnt = 0;
    }
    /* End user code. Do not edit comment generated here */
}

       依然要注意中断的开启,在初始化阶段使用R_Config_TAU0_1_Start(void)。
       效果如下:
   

       使用定时器依然实现了交替闪灯,由于按键的存在也可以控制LED1,当我们按下后,两个LED实现了同频闪烁。
       但这里感受到一个非常便利的地方,对于中断处理我们只需要写好应用就好了,对于中断标志位的处理我们都不用理会,这样非常的便捷。


使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:硬件工程师
简介:有着多年硬件开发经验的专业人员,专注于医疗电子领域,热衷于对新鲜事物的探索,喜欢DIY!

298

主题

1712

帖子

8

粉丝