由代码可知,定时器2的中断时间为1s,定时器3的中断时间为0.1s,定时器4的中断时间为2s,中断优先级大小为:定时器2>定时器3>定时器4
1. 网关2先给网关1下发命令,网关1的串口3来接收网关2下发的数据。所以串口3首先发生中断void USART3_IRQHandler(),将串口3接收到的数据存到数组RS485_RX_BUF[RS485_RX_CNT],同时将这一帧数据打印出来,接收完一帧数据后,将check_over置1
2. 0.1s后定时器3发生中断,初始状态下状态机GW_ok_station为Free,定时器3中断10次后,耗时1s,此时定时器2也进来中断,由中断优先级可知,定时器3先暂停中断,让定时器2先发生中断,所以跳转到void TIM2_IRQHandler(void)
3. 由上可知,GW_ok_station仍为Free,check_over为1,所以进入 receiveuart2()函数,解析网关2发来的数据,初始状态下Resolve_Order为 Heade