(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)目测得到了精确的计数值

转载于:https://www.cnblogs.com/hebaichuanyeah/archive/2013/06/07/3124154.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值