查看: 1858|回复: 0

[原创] 【LPC860-max板卡试用】4.MRT应用

[复制链接]
  • TA的每日心情
    开心
    2019-3-5 08:47
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3433

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9100
    最后登录
    2025-9-11
    发表于 2023-11-21 17:56:53 | 显示全部楼层 |阅读模式
          阅读芯片手册的时候,发现MRT也挺有意思。翻其他LPC MCU手册的时候,也有这个功能,看起来像标配。正好测试一下。 MRT(Multi-Rate Timer)具有多个计时器通道,每个通道可以独立配置和运行,允许系统在不同的时间基准上执行多个定时任务。有时候项目中还是需要几个不同时间的定时器,当然普定也能实现,有了MRT会更方便一点。
          从数据手册上看,LPC865的MRT共有4个独立通道。按照说明每个通道是相互独立的,它们在硬件上是隔离的,因此它们不会相互影响。每个通道都有自己的计时器和计数寄存器。你只需要配置和使用各个通道,它们就会独立地工作。
         这次测试时基于官方SDK的Demo,官方比较simple,现进行修改为两通道,目的是使用其中两个通道做不同的定时,翻转不同的LED,观察测试效果。
    使用的LED为板卡上的两个,如图1所示:

    3-2.JPG
    图1

    其中一个修改为200ms翻转一次,一个修改为500ms翻转一次,使用通道0和通道1.部分修改代码如下:
    1. if (USEC_TO_COUNT(500000U, mrt_clock) > MRT_CHANNEL_INTVAL_IVALUE_MASK)
    2.     {
    3.         mrtDividerValue5 = 0;
    4.         mrtEnableCount5  = true;
    5.         while (USEC_TO_COUNT((500000U >> (++mrtDividerValue5)), mrt_clock) > MRT_CHANNEL_INTVAL_IVALUE_MASK)
    6.         {
    7.         }
    8.         MRT_StartTimer(MRT0, kMRT_Channel_1, USEC_TO_COUNT((500000U >> mrtDividerValue5), mrt_clock));
    9.     }
    10.     else
    11.     {
    12.         MRT_StartTimer(MRT0, kMRT_Channel_1, USEC_TO_COUNT(500000U, mrt_clock));
    13.     }
    复制代码

        因为不同的通道中断标志位不一样,在IRQ函数中增加一下两个通道的中断标志位判断,原SDK没写这部分,修改完就没问题了。中断处理如下:
    1.   if (MRT_GetStatusFlags(MRT0, kMRT_Channel_1) & kMRT_TimerInterruptFlag)
    2.                 {
    3.     MRT_ClearStatusFlags(MRT0, kMRT_Channel_1, kMRT_TimerInterruptFlag);
    4.     mrtCountValue5++;
    5.    if (mrtCountValue5 == (1 << mrtDividerValue5))
    6.    {
    7.      mrtIsrFlag5 = true;
    8.     }
    9.         }
    复制代码

    开始debug,看一下效果,如图2所示:

    3-1.gif
    图2

    这样就能够理解MRT的基本使用了。


    加油哦
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-12 13:11 , Processed in 0.080331 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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