tdcWaitus()函数的最长等待时间文档规定为250,000us。 但我需要比这更长一点的时间。
如果出现错误、编译器将允许一个小于350、000us 的值。 我已在我的代码中成功测试了高达340、000us 的电流。
我的问题是,我是否可以在 tdcWaitus()函数中安全可靠地使用340000us 的值?
如果不是、还有其他方法可以减慢该时钟、也许 可以使用预分频器吗?
MYCODE:
//首先安全地获取外设
fwAcquirePeripheral (Peripheral_TDC);
//测试-切换 LED,以便我们知道它正在运行
if (state.Toggle = 1){
GpioClearOutput (AUXIO_O_LED_CTRL);
State.Toggle = 0;
}否则{
GpioSetOutput (AUXIO_O_LED_CTRL);
State.Toggle=1;
}
tdcSetCntSource (TDC_CNTSRC_48M_RCOSC);
tdcSetTriggers (TDC_STARTTRIG_AUXIO_LOW_BASE+AUXIO_I_PERIOD、TDC_STOPTRIG_AUXIO_LOW_BASE+AUXIO_I_PERIOD、0);
tdcEnable();
tdcArm (TDC_START_SYNC);
tdcWaitU (340000);//如果没有操作,则在250ms 内超时。最大值<350000
tdcCheckDoneEv (state.running);
如果(state.running = 1){//测量有效、则获取 TDC 计数器值
tdcGetValue (state.PeriodHigh、state.PeriodLow);
}否则{// TDC 超时,值无效
State.PeriodHigh = 0;
State.PeriodLow = 0;
}
tdcDisable();//禁用 TDC
fwReleasePeripheral (Peripheral_TDC);//释放共享外设
//检查是否有任何更改,不能嵌套多个 IF,所以请单独进行
if (state.running!= output.running){
State.New=1;
}
if (state.PeriodLow!= output.PeriodLow){
State.New=1;
}
if (state.PeriodHigh!= output.PeriodHigh){
State.New=1;
}
if (state.New = 1){//如果有任何更改、请将其报告回应用程序
Station.New = 0;
output.running = state.running;
output.PeriodHigh = state.PeriodHigh;
output.PeriodLow = state.PeriodLow;
//fwGenAlertInterrupt ();//立即通知应用程序
fwGenAlertInterrupt();//在任务结束时通知应用程序
}
//所有完成的操作将启动下一个任务。 应用程序将在!Running 上终止任务。
fwScheduleTask (3);//在3个 RTC 周期内触发下一个任务, 在 <=2、>=3时不稳定是正常的。