注册 登录
查看: 214|回复: 4

在做TPM脉冲计数的时候出现问题

[复制链接]
发表于 2014-8-22 16:21:18 | 显示全部楼层 |阅读模式
void main()
{
    uint16 count;
    printf("\n*****TPM 脉冲计数 测试*****\n");
    tpm_pwm_init(TPM0, TPM_CH0,1500,50);      //初始化 PWM
    tpm_pulse_init(TPM1,TPM_CLKIN0,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频系数为 1
    while(1)
    {
        tpm_pulse_clean(TPM1);                                  //清空脉冲计数器计算值(马上清空,这样才能保证计数值准确)
        pit_delay_ms(PIT0,1000);                                //利用 PIT 延时时间,LPTMR模块进行 计算,累加 FTM 产生的PWM脉冲
        count   =  tpm_pulse_get(TPM1);                         //保存脉冲计数器计算值
        printf("LPTMR脉冲计数为:%d\n",   count);                 //打印计数值
    }
}
如果我把(tpm_pwm_init(TPM0, TPM_CH0,1500,50);      //初始化 PWM)注释掉的话,就不能计数了,这是为什么。这句话跟计数无关啊。波形是用波形发生器给的。如果不注释的话就行。
回复

使用道具 举报

发表于 2014-8-22 16:27:37 | 显示全部楼层
这代码是有bug,需要初始化PWM。
你试试看看 PWM的哪部分代码影响到。

我这边,没得测试,也比较忙,所以一直没修复这bug
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 16:40:30 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-22 16:27
这代码是有bug,需要初始化PWM。
你试试看看 PWM的哪部分代码影响到。

我如果把它改为TPM0改为TPM2的话数据就不准确了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-22 16:41:05 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-22 16:27
这代码是有bug,需要初始化PWM。
你试试看看 PWM的哪部分代码影响到。

大概是什么原因呢?
回复 支持 反对

使用道具 举报

发表于 2014-8-22 16:43:27 | 显示全部楼层
798931248 发表于 2014-8-22 16:41
大概是什么原因呢?

你逐步屏蔽 PWM 这函数的内部代码,看看 脉冲计数漏了 哪个语句导致不行
回复 支持 反对

使用道具 举报

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

本版积分规则

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