查看: 2486|回复: 0

[分享] (Kinetis K60) LPTMR脉冲计数

[复制链接]
  • TA的每日心情
    开心
    2024-10-30 10:28
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    23

    主题

    138

    帖子

    0

    高级会员

    Rank: 4

    积分
    742
    最后登录
    2025-6-16
    发表于 2020-7-5 21:39:39 | 显示全部楼层 |阅读模式
    (Kinetis K60) LPTMR脉冲计数初始化lptmr脉冲计数
    void LPTMR_init(U16 CountNUM)
    {
        SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;  //打开 PORTA 时钟
        PORTA_PCR19 = PORT_PCR_MUX(0x06);    //在PTA19上使用 ALT6
        SIM_SCGC5 |= SIM_SCGC5_LPTIMER_MASK;    //使能LPT模块时钟

        LPTMR0_CSR = 0x00;                      //关LPT 设置时钟分频

        LPTMR0_CMR = CountNUM;                       //设置比较值

        LPTMR_PSR_REG(LPTMR0_BASE_PTR) = LPTMR_PSR_PCS(1) | LPTMR_PSR_PBYP_MASK | LPTMR_PSR_PRESCALE(2);
      
        LPTMR0_CSR = LPTMR_CSR_TPS(1) | LPTMR_CSR_TMS_MASK  | LPTMR_CSR_TPP_MASK | LPTMR_CSR_TEN_MASK  | LPTMR_CSR_TIE_MASK  ;
        //         TPS 01 管脚:LPTMR_ALT1  TMS 1 脉冲计数模式   TPP 1 下降沿    TEN 1 使能定时器     TIE 1 开启中断
        enable_irq(85u);               
    }

    PIT中断服务函数观摩1S计数

    void PIT0_IRQHandler(void)
    {
        count = LPTMR0_CNR;                                                     //保存脉冲计数器计算值
       
        LPTMR_CSR_REG(LPTMR0_BASE_PTR)  &= ~LPTMR_CSR_TEN_MASK;     //重启LPTMR 清计数
        LPTMR_CSR_REG(LPTMR0_BASE_PTR)  |=LPTMR_CSR_TEN_MASK;
       
        count1=count;
        count2=count>>8;
        Uart4_SendByte(count2);
        Uart4_SendByte(count1);
        count=0;  


        PIT_TFLG0 |= PIT_TFLG_TIF_MASK;   //清中断标志
        PIT_MCR = 0;   
    }

    短接PTA10(FTM2 CHO)和PTA19(LPMTR0_ALT1)目测得到了精确的计数值



    11111签到
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-24 03:28 , Processed in 0.078142 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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