查看: 2673|回复: 4

[分享] KL25定时器的定时时间怎么计算,怎么用定时器实现特定的....

[复制链接]

该用户从未签到

15

主题

40

帖子

0

注册会员

Rank: 2

积分
155
最后登录
2015-7-4
发表于 2015-1-21 20:32:38 | 显示全部楼层 |阅读模式
KL25定时器的定时时间怎么计算,怎么用定时器实现特定的时间定时中断
回复

使用道具 举报

  • TA的每日心情
    难过
    2016-12-22 15:37
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    10

    主题

    89

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    373
    最后登录
    2022-1-27
    发表于 2015-1-27 21:54:55 | 显示全部楼层
    我使用的是PE软件来算了,不知道 这样可以帮到你不
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    825

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1687
    最后登录
    2015-2-10
    发表于 2015-1-31 22:18:42 | 显示全部楼层

    /*!
    *  @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;
    }
    现在的问题是用上边的底层库,实现脉冲计数,计数的结果是零,大家帮忙看一下啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11

    主题

    835

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1795
    最后登录
    2016-4-2
    发表于 2015-1-31 22:18:50 | 显示全部楼层
    本帖最后由 柳叶刀 于 2015-2-2 11:07 编辑

    uint16 lptmr_pulse_get(void)
    {

        LPTMR0_CNR = 0;

        return (uint16)LPTMR0_CNR;
    }?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    35

    帖子

    0

    注册会员

    Rank: 2

    积分
    83
    最后登录
    2015-2-6
    发表于 2015-1-31 22:19:12 | 显示全部楼层
    学习,mark
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-17 18:17 , Processed in 0.097611 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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