查看: 7266|回复: 4

[原创] 【LPC54114之3定时器Ctimer】

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

    连续签到: 1 天

    [LV.1]初来乍到

    110

    主题

    3431

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    9094
    最后登录
    2025-9-9
    发表于 2017-5-7 18:13:14 | 显示全部楼层 |阅读模式
    LPC54114定时器还是挺丰富的,有5个标准定时器,这里测试标准计数定时器Ctimer0 ,同时测试一下定时器中断。其实在点完灯以后,剩下的配置基本就是套路了。初始化时钟,初始化引脚,初始化定时器,开启中断,如图1所示:

    1.                  CTIMER_GetDefaultConfig(&config);
    2.                  CTIMER_Init(CTIMER0,&config);
    3.                  
    4.                  //match channel 0 configuration
    5.                  matchConfig0.enableCounterReset = true;
    6.                  matchConfig0.enableCounterStop = false;
    7.                  matchConfig0.matchValue = CLOCK_GetFreq(kCLOCK_BusClk)/2;
    8.                  matchConfig0.outControl = kCTIMER_Output_Toggle;
    9.                  matchConfig0.outPinInitState = false;
    10.                  matchConfig0.enableInterrupt = true;
    11.                  
    12.                  CTIMER_RegisterCallBack(CTIMER0,&ctimer_callback_table[0],kCTIMER_MultipleCallback);
    13.                  CTIMER_SetupMatch(CTIMER0,kCTIMER_Match_0,&matchConfig0);
    14.                  CTIMER_StartTimer(CTIMER0);
    15.                  

    16.      GPIO_PinInit(GPIO,0,30,&led_config);
    17.                  GPIO_SetPinsOutput(GPIO,0,1u<<30);
    18.                  
    19.                  GPIO_SetPortMask(GPIO,0,1u<<30);
    20.                  GPIO_WriteMPort(GPIO,0,1u<<30);
    复制代码

    完成的功能就是定时1S,翻转LED灯,实现闪烁灯效果。中断callback函数如图2所示:
    1. void ctimer_match0_callback(uint32_t flags)
    2. {
    3. //        static uint32_t count0;
    4.         count0++;
    5.         if(count0 >= 2)
    6.         {
    7.                 GPIO_TogglePinsOutput(GPIO,0,1u<<30);
    8.                 count0=0;
    9.         }
    10. }
    复制代码

    这里特别注意一下定时器初始函数中matchvalue的定义,决定定时的时间。
    效果如图3所示:

    虽然功能简单,但是练习必不可少。

    t33.gif
    加油哦
    回复

    使用道具 举报

    该用户从未签到

    61

    主题

    233

    帖子

    7

    高级会员

    Rank: 4

    积分
    750
    最后登录
    2021-1-25
    发表于 2017-9-15 16:47:05 | 显示全部楼层
    你好,请问这个是怎么定时1S的。这个value值怎么设置
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    47

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    415
    最后登录
    2018-12-5
    发表于 2017-9-16 15:35:51 | 显示全部楼层
    感谢分享,图做的很给力
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    11
    最后登录
    2020-10-9
    发表于 2017-11-18 10:54:48 | 显示全部楼层
    没看懂matchValue为什么就得到了定时1秒,请高手指教。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-7-5 15:45
  • 签到天数: 664 天

    连续签到: 1 天

    [LV.9]以坛为家II

    42

    主题

    1594

    帖子

    19

    金牌会员

    Rank: 6Rank: 6

    积分
    5649
    最后登录
    2021-12-22
    发表于 2017-11-19 18:09:45 | 显示全部楼层
    matchConfig0.matchValue = CLOCK_GetFreq(kCLOCK_BusClk)/2;
    应该是亮灭分别1/2秒,周期是1秒
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-10 01:33 , Processed in 0.099169 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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