打印
[Kinetis]

KL25低功耗定时器模块设置

[复制链接]
2558|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
774729254|  楼主 | 2014-6-19 15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*!
*  @brief      LPTMR脉冲计数初始化
*  @param      LPT0_ALTn   LPTMR脉冲计数管脚
*  @param      count       LPTMR脉冲比较值
*  @param      LPT_CFG     LPTMR脉冲计数方式:上升沿计数或下降沿计数
*  @since      v5.0
*  Sample usage:       lptmr_pulse_init(LPT0_ALT1,0xFFFF,LPT_Rising);     // LPTMR 脉冲捕捉,捕捉0xFFFF后触发中断请求(需要开中断才执行中断复位函数),上升沿捕捉
*/
void lptmr_pulse_init(LPT0_ALTn altn, uint16 count, LPT_CFG cfg)
{
    //SIM_SCGC5 |=(uint32)(0x1UL<<11);                        //open the clock of the PTC
     port_init(PORTC,5,3);             //在PTC5上使用 ALT3
    // 开启模块时钟
    SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;                        //使能LPT模块时钟
   
    /*
    else                                    //不可能发生事件
    {
        ASSERT((altn == LPT0_ALT1 ) || (altn == LPT0_ALT2 ));   //设置管脚有误?
    }
    */
    // 清状态寄存器
    LPTMR0_CSR = 0x00;                                          //先关了LPT,这样才能设置时钟分频,清空计数值等

    // 设置累加计数值
    LPTMR0_CMR  =   LPTMR_CMR_COMPARE(count);                   //设置比较值

    // 管脚设置、使能中断
    LPTMR0_CSR  =  (0
                    | LPTMR_CSR_TPS(altn)       // 选择输入管脚 选择
                    | LPTMR_CSR_TMS_MASK        // 选择脉冲计数 (注释了表示时间计数模式)
                    | ( cfg == LPT_Falling ?  LPTMR_CSR_TPP_MASK :   0  )  //脉冲计数器触发方式选择:0为高电平有效,上升沿加1
                    | LPTMR_CSR_TEN_MASK        //使能LPT(注释了表示禁用)
                    | LPTMR_CSR_TIE_MASK        //中断使能
                    //| LPTMR_CSR_TFC_MASK      //0:计数值等于比较值就复位;1:溢出复位(注释表示0)
                   );
}

/*!
*  @brief      获取LPTMR脉冲计数值
*  @return     脉冲计数值
*  @since      v5.0
*  Sample usage:       uint16 data = lptmr_pulse_get();  //获取脉冲计数值
*/
uint16 lptmr_pulse_get(void)
{

    LPTMR0_CNR = 0;

    return (uint16)LPTMR0_CNR;
}


/*!
*  @brief      清空LPTMR脉冲计数
*  @since      v5.0
*  Sample usage:       lptmr_counter_clean();          //清空LPTMR脉冲计数
*/
void lptmr_pulse_clean(void)
{
    LPTMR0_CSR  &= ~LPTMR_CSR_TEN_MASK;     //禁用LPT的时候就会自动清计数器的值
    LPTMR0_CSR  |= LPTMR_CSR_TEN_MASK;
}
现在的问题是用上边的底层库,实现脉冲计数,计数的结果是零,大家帮忙看一下啊

相关帖子

沙发
FSL_TICS_Robin| | 2014-6-19 16:38 | 只看该作者
楼主你好
LPTMR的计数模式可以直接在调试时观察计数值呢
是否有尝试过呢?

使用特权

评论回复
板凳
FSL_TICS_Robin| | 2014-6-19 16:49 | 只看该作者
楼主用的哪家的驱动库呀?
版本号多少?
以便大家更容易帮助到你。

使用特权

评论回复
地板
774729254|  楼主 | 2014-6-19 16:54 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-19 16:49
楼主用的哪家的驱动库呀?
版本号多少?
以便大家更容易帮助到你。

你好,这个是参考野火kl25库,然后改写的,谢谢

使用特权

评论回复
5
FSL_TICS_Robin| | 2014-6-19 17:10 | 只看该作者
774729254 发表于 2014-6-19 16:54
你好,这个是参考野火kl25库,然后改写的,谢谢

你是用野火KL26的库修改的吗?
修改了哪些地方呢?
怎么调用的呢?

使用特权

评论回复
6
FSL_TICS_Robin| | 2014-6-19 17:29 | 只看该作者
774729254 发表于 2014-6-19 16:54
你好,这个是参考野火kl25库,然后改写的,谢谢

如果是野火的库,建议你看一下【一天攻破KL26】BUG汇总里和LPTMR有关的几项。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

58

主题

299

帖子

1

粉丝