如果代码中有涉及字符串操作的函数,一定要#include <string.h>
这个实例主要是用来演示:
1、芯片串口的数据接收;
2、数据接收后的解析;
3、以及数字和指针的一些操作。
串口的收发函数
//串口接收中断void USART1_IRQHandler(void) { u8 Res; if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { Res =USART_ReceiveData(USART1);//(USART1->DR); data[les]=Res; les++; } if(les==20) les=0; } //串口发送数据void USART1_Write(USART_TypeDef* USARTx, uint8_t *Data, uint32_t len){ uint32_t i; USART_ClearFlag(USARTx, USART_FLAG_TC); for(i = 0; i < len; i++) { USART_SendData(USARTx, *Data++); while( USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET ); }}
主函数
u8 *p="This is MD testing\r\n";u8 *find;int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// delay_init(168); // uart_init(115200); // LED_Init(); // while(1) { USART1_Write(USART1,p,strlen(p)); if((NULL != strstr((const char *)data, (const char *)"OK"))) { printf("you input ok\r\n"); find=strstr((const char *)data, (const char *)"OK"); find++; find++; USART1_Write(USART1,find,strlen(find));// ·打印方式2// while(*find!='\n')// {printf("%c\n",*find);// find++;// } memset(data, 0, strlen((const char *)data)); les=0; } delay_ms(1000); } }