如果代码中有涉及字符串操作的函数,一定要#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 "; 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 "); find=strstr((const char *)data, (const char *)"OK"); find++; find++; USART1_Write(USART1,find,strlen(find)); // ·打印方式2 // while(*find!=' ') // {printf("%c ",*find); // find++; // } memset(data, 0, strlen((const char *)data)); les=0; } delay_ms(1000); } }