大家好、团队、
我使用的是 TM4C129ENCPDT 控制器。 已配置 T0CCP0、T0CCP1和 T1CCP1进行频率测量。
我已将 Timer0配置为分离操作、并将 TimerA 和 B 配置为捕获脉冲。 我将获得正确的 T0CCP0和 T1CCP1值、但没有适用于 T0CCP1的数据。
以下是代码:
//Initalisation
void Init_Freq_measure (void)
{
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOL));
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOD));
SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_TIMER0));
SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);
while (!SysCtlPeripheralReady (SYSCTL_Periph_Timer1));
TimerLoadSet (TIMER0_BASE、TIMER_Both、0xFFFF);
//TimerLoadSet (TIMER0_BASE、TIMER_B、0xFFFF);
TimerLoadSet (Timer1_base、timer_B、0xFFFF);
GPIOPinTypeTimer (GPIO_PORTL_BASE、GPIO_PIN_7);
GPIOPinConfigure (GPIO_PL7_T1CCP1);
GPIOPinTypeTimer (GPIO_PORTD_base、GPIO_PIN_0);
GPIOPinConfigure (GPIO_PD0_T0CCP0);
GPIOPinTypeTimer (GPIO_PORTD_base、GPIO_PIN_1);
GPIOPinConfigure (GPIO_PD1_T0CCP1);
TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAGE|TIMER_CFG_B_CAP_COUNT_UP|TIMER_CFG_A_CAP_COUNT_UP);
TimerControlEvent (TIMER0_BASE、TIMER_Both、TIMER_EVENT_POS_EDGE);
TimerConfigure (Timer1_base、TIMER_CFG_SPLIT_PAIRGE|TIMER_CFG_B_CAP_COUNT_UP);
TimerControlEvent (Timer1_base、timer_B、timer_event_POS_EDGE);
TimerEnable (TIMER0_BASE、TIMER_Both);
TimerEnable (Timer1_base、timer_B);
}
//定时器2中断1秒
空 Timer2IntHandler (空)
{
TimerIntClear (TIMER2_base、TIMER_TINA_TIMEOUT);
START_r = END_r;
start_y = end_y;
start_b = end_b;
end_r = TimerValueGet (TIMER0_BASE、TIMER_A);
end_y = TimerValueGet (TIMER0_BASE、TIMER_B);
end_b = TimerValueGet (Timer1_base、timer_B);
FREQ_r =计算频率(START_r、END_r);
FREQ_y =计算频率(START_y、END_y);
FREQ_b =计算频率(START_b、END_b);
}
提前感谢您。
此致
Shijin