我目前使用的MCU是KF8A100ENG,在做通过INT0与Timer4结合,实现PWM输入捕获的功能。通过示波器查看到PWM输入的周期和占空比捕获的都是正确的(通过一个测试PIN验证),但是在使用Timer4计数上遇到了问题。
这是Timer4的初始化:
//T4 init
T4CTL = 0x21; //时钟源为INTHF(8MHz), 4分频,使能T4
T4IF = 0; //T4中断标志位, 0无中断, 1有中断
T4IE = 1; //T4中断使能
T4H = 0;
T4L = 0;
PUIE = 1; //使能所有未屏蔽的外设中断
AIE = 1; //使能所有未屏蔽的全局中断
这是Timer4计数值的获取:
capEdgeTime[capEdgeIndex] = (T4H<<8|T4L);
请问,这样取Timer4的计数值对吗?因为T4H和T4L是实时变化的,debug时断点打在以上代码的下面一行,查看T4H和T4L寄存器的值,跟capEdgeTime[capEdgeIndex] 的值差别还是很大的。是不是我获取的方式不对?
|