查看: 4442|回复: 2

[原创] 【LPC11U68】10. 定时器/计数器—计数器

[复制链接]
  • TA的每日心情
    慵懒
    昨天 10:39
  • 签到天数: 1873 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112711
    最后登录
    2025-8-30
    发表于 2018-11-8 11:49:54 | 显示全部楼层 |阅读模式
    本帖最后由 stm1024 于 2018-11-16 21:32 编辑

    定时器和计数器本质上是一个东西,这就一个硬币的两面一样。测试代码:
    1. #include "cmsis.h"
    2. #include "core_cm0plus.h"
    3. #include "board.h"

    4. int main()
    5. {
    6.     Board_Init();
    7.    
    8.     //for led
    9.     LPC_SYSCTL->SYSAHBCLKCTRL|=1<<6;//GPIO clock
    10.     LPC_GPIO->DIR[2]|= 1<<17;//P2.17 output
    11.    
    12.     //for counter capture
    13.     LPC_GPIO->DIR[1] &= ~(1<<8);//P1.8 direction input
    14.     //config gpio for capture
    15.     LPC_IOCON->PIO1[8]=IOCON_FUNC3;//P1.8 as CT16B0_CAP0
    16.    
    17.     //for CT16B0
    18.     LPC_SYSCTL->SYSAHBCLKCTRL|=1<<7;//CT16B0 clock
    19.     LPC_TIMER16_0->CCR=0x25;//CT16B0 as counter, select ch0

    20.     LPC_TIMER16_0->CR[0]=0;
    21.     LPC_TIMER16_0->TCR=1;//enable TC & PC
    22.    
    23.     NVIC_ClearPendingIRQ(TIMER_16_0_IRQn);
    24.     NVIC_EnableIRQ(TIMER_16_0_IRQn);

    25.     while(1)
    26.     {
    27.     }
    28. }

    29. void TIMER16_0_IRQHandler(void)
    30. {
    31.     if((1UL<<4)==LPC_TIMER16_0->IR)//Match Pending for CR0INT
    32.     {
    33.         //Write 1 to corresponding IR bit reset interrupt flag
    34.         LPC_TIMER16_0->IR = (1UL<<4);
    35.         LPC_GPIO->NOT[2]=(1<<17);//toggle red led
    36.     }
    37. }
    复制代码

    重点看红色部分。P1.8针脚作为捕获输入,这个可以在IOCON中查看。然后需要配置CCR,把定时器/计数器切换为计数器模式,并选择通道0,上升沿产生中断
    然后我们在计数器中断中让LED toggle。
    一般的逻辑分析仪有PWM波输出的,就用它作为信号源,接到P1.0端口:
    352333288480227438.jpg


    配置:
    2018-11-08_113348.png


    如果我修改频率,灯的闪烁频率也会不一样。原则上来说,修改占空比会改变灯的亮度,但是实际测试亮度变化并不大。



    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 01:09
  • 签到天数: 2964 天

    连续签到: 3 天

    [LV.Master]伴坛终老

    23

    主题

    4179

    帖子

    82

    金牌会员

    Rank: 6Rank: 6

    积分
    13957
    最后登录
    2025-8-30
    发表于 2018-11-8 12:09:44 | 显示全部楼层
    本帖最后由 toofree 于 2018-11-8 12:12 编辑

    楼主蓝色、红色排针很骚气
    看你把程序都整成直接寄存器操作了,没注释的话看起来会头大

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 10:39
  • 签到天数: 1873 天

    连续签到: 4 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112711
    最后登录
    2025-8-30
     楼主| 发表于 2018-11-8 12:41:59 | 显示全部楼层
    本帖最后由 stm1024 于 2018-11-8 12:46 编辑
    toofree 发表于 2018-11-8 12:09
    楼主蓝色、红色排针很骚气
    看你把程序都整成直接寄存器操作了,没注释的话看起来会头大

    这个……其实是发扬勤俭节约的优良传统,后面蓝绿色的排针不够用了,把以前用剩下的红色、黑色排针(最外面一排)边角料都用上了
    寄存器才能深入理解控制器,读起来确实有点难度,但是对着手册,理解起来却非常简单。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-31 06:56 , Processed in 0.078098 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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