串口对字符串的一些操作

如果代码中有涉及字符串操作的函数,一定要#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);

    }
  
}
原文地址:https://www.cnblogs.com/nasduc/p/7383908.html