void 定时器中断函数入口(void) {
if(判断是否为定时器中断) { static uint16_t num定义静态变量; static uint8_t index定义静态变量; unsigned char buff_busy定义局部变量; if(串口中断接收数据数量>静态变量) { 静态变量=串口中断接收数据数量; } else if(静态变量串口中断接收数据数量&&静态变量!=0) { while(g_uart[静态变量%定义的缓存数组数量].FLAGture) { 静态变量=(静态变量+1)%定义的缓存数组数量; if(局部变量++>定义的缓存数组数量) { 将收到的数据清空; USART_RX_STA=0;//清零 num=0; break; } } 一旦检测到空数组,就开始赋值; g_uart[idex].DATA_LEN=num;//数组长度 memset(g_uart[idex].DATA,0,g_uart[idex].DATA_LEN); //将要赋值的结构体数组清零 memcpy(g_uart[idex].DATA,bufff,g_uart[idex].DATA_LEN);//将要赋值的数据存到清零的结构体 g_uart[idex].FLAG=ture;//将此结构体的标志位标志位turememset(bufff,0,g_uart[idex].DATA_LEN);//将串口接收的数据bufff成功赋值给结构体后立即清零,方便下一次的接收 USART_RX_STA=0;//方便下一次数据接收计数 num=0; //清零 } else { ; } LED1=!LED1; TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除中断标志位 } }