我有个程序,需求是计算单位时间有多少个脉冲。
现在做到用定时器的捕获,计算两个脉冲之间的时间。
__interrupt void TIMER1_A0_ISR (void) 只能相应脉冲来的捕获事件。
现在我想要:如果很长时间没有脉冲,计数器满的时候也处理数据。
就是说没有脉冲来,我通过计数器满中断,刷新数据。
请问怎么做?
程序:
Timer_A_initContinuousModeParam initContParam_A1 =
{
TIMER_A_CLOCKSOURCE_SMCLK, // SMCLK Clock Source
TIMER_A_CLOCKSOURCE_DIVIDER_2, // SMCLK/2 = 4MHz
TIMER_A_TAIE_INTERRUPT_DISABLE, // Disable Timer interrupt
TIMER_A_DO_CLEAR, // Clear value
false // Start Timer
};
Timer_A_initCaptureModeParam initCapParam_A1 =
{
TIMER_A_CAPTURECOMPARE_REGISTER_0,
TIMER_A_CAPTUREMODE_RISING_EDGE,
TIMER_A_CAPTURE_INPUTSELECT_CCIxA,
TIMER_A_CAPTURE_SYNCHRONOUS,
TIMER_A_CAPTURECOMPARE_INTERRUPT_ENABLE,
TIMER_A_OUTPUTMODE_OUTBITVALUE
};
void Init_TimerA(void)
{
// //计数器 TA1 初始化
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P1, GPIO_PIN4, GPIO_TERNARY_MODULE_FUNCTION); //设置P1.4为捕获输入口
Timer_A_initContinuousMode(TIMER_A1_BASE, &initContParam_A1);
Timer_A_initCaptureMode(TIMER_A1_BASE, &initCapParam_A1);
}
__interrupt void TIMER1_A0_ISR (void)
{
unsigned int temp;
temp=TA1CCR0;
if(TA1CCTL0&COV)
{
TA1CCTL0&= ~COV;
}
这里处理计数器的差值,就是两个脉冲之间的时间;
}
|