注册 登录
查看: 518|回复: 3

[电磁组] KL26TPM脉冲计数的初始化怎么写tpm_pulse_init(TPM1,,)

[复制链接]
发表于 2014-5-19 17:36:26 | 显示全部楼层 |阅读模式
本帖最后由 sxy88665360 于 2014-5-19 17:36 编辑

//////////////////////////////// 以下为脉冲计数  //////////////////////////////////////////
void tpm_pulse_init(TPMn_e tpmn,TPM_CLKIN_e clkin,TPM_PS_e ps)
{
    ASSERT(ps < TPM_PS_MAX);

    //配置 复用
    switch(tpmn)
    {
    case TPM0:
        SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;       //使能TPM0时钟


        break;
    case TPM1:
        SIM_SCGC6 |= SIM_SCGC6_TPM1_MASK;       //使能TPM1时钟
        break;

    case TPM2:
        SIM_SCGC6 |= SIM_SCGC6_TPM2_MASK;       //使能TPM2时钟
        break;
    default:
        ASSERT(0);
    }

    if(clkin == TPM_CLKIN0)
    {
        SIM_SOPT4 &= ~( SIM_SOPT4_TPM0CLKSEL_MASK << tpmn );
        port_init(TPM_CLKIN0_PIN,ALT4);
    }
    else if(clkin == TPM_CLKIN1)
    {
        SIM_SOPT4 |= ( SIM_SOPT4_TPM0CLKSEL_MASK << tpmn );
        port_init(TPM_CLKIN1_PIN,ALT4);
    }
    else
    {
        ASSERT(0);              //断言,clkin 只能 0 和 1
    }

    TPM_SC_REG(TPMN[tpmn])    = ( 0
                                  //| TPM_SC_CPWMS_MASK         //0:上升沿计数模式 ,1: 跳变沿计数模式选择 (注释了表示 0)
                                  | TPM_SC_PS(ps)             //分频因子,分频系数 = 2^PS
                                  | TPM_SC_CMOD(2)
                               );
    TPM_MOD_REG(TPMN[tpmn])   = 0xFFFF;
    TPM_CNT_REG(TPMN[tpmn])   = 0;                          //计数器。只有低16位可用(写任何值到此寄存器,都会清0)
}



//清空计数值
void     tpm_pulse_clean (TPMn_e tpmn)
{
    TPM_CNT_REG(TPMN[tpmn])   = 0;                          //计数器。只有低16位可用(写任何值到此寄存器,都会清0)
}

//获取计数值
extern uint16     tpm_pulse_get (TPMn_e tpmn)
{
    return (uint16)TPM_CNT_REG(TPMN[tpmn]);                          //计数器。只有低16位可用(写任何值到此寄存器,都会清0)
}


回复

使用道具 举报

发表于 2014-5-19 17:39:54 | 显示全部楼层
有参考例程的啊,看看参考例程怎么调用就是了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-19 17:44:27 | 显示全部楼层
麦色 发表于 2014-5-19 17:39
有参考例程的啊,看看参考例程怎么调用就是了

KL26的例程上没有的
回复 支持 反对

使用道具 举报

发表于 2014-5-19 18:15:10 | 显示全部楼层
sxy88665360 发表于 2014-5-19 17:44
KL26的例程上没有的

有 tpm_pulse 例程的啊
回复 支持 反对

使用道具 举报

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

本版积分规则

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