在写Modbus协议,RTU格式。帧头帧尾有3.5个字符时间长度,想用定时器判断,请哪位大侠有空帮忙看看,如何写。
定时器的初始化,是程序初始化时初始化,还在判断接收数据时初始化?
部分参考程序:
void TimeInit() { ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); ROM_TimerConfigure(TIMER1_BASE, TIMER_CFG_32_BIT_PER); ROM_TimerLoadSet(TIMER1_BASE, TIMER_A, 5 * 50000); // 3.5个字符时间(5ms) ROM_TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT); ROM_IntEnable(INT_TIMER1A); // ROM_IntMasterEnable(); ROM_TimerEnable(TIMER1_BASE, TIMER_A); } void Timer1A_ISR(void) { unsigned long ulStatus; ulStatus = ROM_TimerIntStatus(TIMER0_BASE, true); // 读取中断状态 ROM_TimerIntClear(TIMER0_BASE, ulStatus); // 清除中断状态,重要! if (ulStatus & TIMER_TIMA_TIMEOUT) // 如果是Timer超时中断 { TimeOutFlag = 1; } }
[ 本帖最后由 benbending 于 2013-2-5 16:24 编辑 ]
|