STM32串口接收数据处理方法STM32串口接收定长数据处理方法STM32串口接收定长数据的处理方法非常简单,我现在做项目就是用这个,处理MODBUS协议直接编码
voidusarT1_IRQHandler(void ) /串行1中断服务程序({u8 Res; usart _ get it status (usar t1,USART_IT_RXNE )!=RESET接收中断{ usart _ clearitpendingbit (usar t1,USART_IT_RXNE ); //清除中断RES=usart_receivedata(usart1 ); //接收到的数据switch(usartrecein ) case0:if () RES==SW _ id|(RES==255 ) ) usartrecebuff [ usartrecein ]=reeee 布雷克; default : usartrecebuff [ usartrecein ]=RES; 布雷克; (if ) usartrecein=8) {USARTReceFullFlag=1; }}要执行逻辑理解解释,首先定义全局变量的接收完成标志位USARTReceFullFlag。 如果接收数据长度需要为8,则在串行中断中接收数据长度=8时,也可以将该标志位置设为1,通过串行中断函数判断接收数据头。
之后,在其他地方执行时,直接判断标志位,进行处理相关的内容。 注意:需要清除标志位和接收序列。
usartrecefullflag (if ) if () usartrecebuff[2]==0x01 ) USARTReceBuff[6]==0xcc ) usartrecebuff [7]==0x DD } usarece USARTReceIn=0; }