注册 登录
查看: 331|回复: 1

[其他] kl26脉冲技术问题

[复制链接]
发表于 2014-6-7 11:02:36 | 显示全部楼层 |阅读模式
void main()
{

    uart_init (UART0, 9600);
    printf("\n*****TPM 脉冲计数 测试*****\n");

    tpm_pulse_init(TPM2,TPM_CLKIN0,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频系数为 1
    tpm_pulse_init(TPM1,TPM_CLKIN1,TPM_PS_1); //初始化 TPM2 为脉冲累加,输入管脚为 TPM_CLKIN0_PIN ,分频系数为 1
    pit_init_ms(PIT0, 5);                                //初始化PIT0,定时时间为: 5ms
    set_vector_handler(PIT_VECTORn ,PIT_IRQHandler);      //设置PIT0的中断复位函数为 PIT0_IRQHandler
    enable_irq (PIT_IRQn);                                 //使能PIT0中断
    EnableInterrupts;//中断允许

    while(1)
    {

        printf("LPTMR脉冲计数右为:%d\n",   count2);                 //打印计数值        
        printf("LPTMR脉冲计数左为:%d\n",   count1);                 //打印计数值

    }
}




/**********************中断服务程序*******************/
void PIT_IRQHandler(void)
{   

        tpm_pulse_clean(TPM1);                                  //清空脉冲计数器计算值(马上清空,这样才能保证计数值准确)        
        tpm_pulse_clean(TPM2);                                  //清空脉冲计数器计算值(马上清空,这样才能保证计数值准确)

        pit_delay_ms(PIT0,5);                                //利用 PIT 延时时间,LPTMR模块进行 计算,累加 FTM 产生的PWM脉冲

        count2   =  tpm_pulse_get(TPM2);                         //保存脉冲计数器计算值
        count1   =  tpm_pulse_get(TPM1);                         //保存脉冲计数器计算值

    PIT_Flag_Clear(PIT0);                       //清中断标志位
}

这样为什么记不到数,计数值全为0
回复

使用道具 举报

发表于 2014-6-7 11:04:08 | 显示全部楼层
你到底想干嘛?
pit0 ,即用于定时,又用于延时,是不行的
回复 支持 反对

使用道具 举报

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

本版积分规则

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