主题中讨论的其他器件:冲击
工具/软件:TI-RTOS
你(们)好
我只是为了捕捉 PWM 输入信号的上升沿和下降沿之间的时间差(1KHz 频率)。
我正在使用具有 CCP 模式的定时器0来捕获外部时钟事件。 我的处理程序正在被对外部时钟的上升沿和下降沿进行调用、但当我使用 TimerValueGet (WTIMEER0_BASE、TIMER_A)读取处理程序上的计时器值时、我会得到不适当的值。
定时器 A 的值4294967295
Timer A 值4294978345
三、会议的报告
如何捕获两个边沿的时间差、定时器配置是否有问题。
请找到我的以下配置序列。
SysCtlPeripheralEnable (SYSCTL_Periph_WTIME0);
GPIOPinTypeTimer (GPIO_PORTC_BASE、GPIO_PIN_4);
GPIOPinConfigure (GPIO_PC4_WT0CCP0);
GPIOPadConfigSet (GPIO_PORTC_BASE、GPIO_PIN_4、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);
TimerConfigure (WTIMER 0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME);
TimerControlEvent (WTIMER 0_BASE、TIMER_A、TIMER_EVENT_BLE_ARTS);
TimerIntEnable (WTIMER 0_BASE、TIMER_CAP_EVENT);
System_printf ("clock %u\n"SysCtlClockGet ());
TimerLoadSet (WTIMER 0_BASE、TIMER_A、SysCtlClockGet ());
TimerIntRegister (WTIMER 0_BASE、TIMER_A、Wtimer0IntHandler);
TimerEnable (WTIMER 0_BASE、TIMER_A);
我的处理程序是
无效
Wtimer0IntHandler (空)
{
// unsigned int data = GPIOPinRead (GPIO_PORTC_BASE、GPIO_PIN_4);
// System_printf ("data %d\n",data);
//
//清除计时器中断。
//
无符号超长时间= TimerValueGet (WTIMER 0_BASE、TIMER_A);
System_printf ("定时器 A 值%u\n"timera);
// System_flush();
TimerIntClear (WTIMER 0_BASE、TIMER_CAP_EVENT);
//
//更新显示屏上的中断状态。
//
IntMasterDisable();
// GPIOPinWrite (GPIO_PORTC_BASE、GPIO_PIN_4、0);
//数据=!!!GPIOPinRead (GPIO_PORTC_BASE、GPIO_PIN_4);
// System_printf ("data %d\n",data);
/* if (data!= 0)
{
GPIO_WRITE (Board_LED0、Board_LED_ON);
}
其他
{
GPIO_WRITE (Board_LED0、Board_LED_OFF);
}
*
IntMasterEnable();
}