串口通信判断时,对比上位机传给下位机的数据是否包含或者吻合某个值时,对比完就清空缓存字符串,此处采用memset时数组和字符串不同,记录一下脑子短路造成的坑:
char USART_RX_BUF[200];
char task[6] = "task1";
..........
memset(USART_RX_BUF, 0, sizeof(USART_RX_BUF));
..........
//错误,清空字符串应该填充'\0',而不是0
..........
memset(USART_RX_BUF, '\0', sizeof(USART_RX_BUF));
..........
//正确
另外需要说明的是:
虽然MDK官方给的文档里面,memset应该按照memset(void *,length, value)的顺序,但是亲测无效,只能按照menset(void *,value,length)的顺序,这也是C语言中的顺序。