Tengo un problema con la función strstr
, recibo caracteres de UART con interrupt & Guardarlos en la matriz de longitud n (matriz de búfer). Luego, en el bucle principal, reviso el búfer con la función strstr
de string.h para encontrar una secuencia especial de caracteres (por ejemplo, "hola"). Funciona bien por primera vez, pero a veces no funciona y sin recibir esa serie de actos de cadena como cuando se encuentran coincidencias.
Código de muestra:
Controlador de interrupciones, cuando se recibe un carácter, lo guarda en el búfer:
Código:
void USART1_IRQHandler(void)
{
/* RXNE handler */
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Rx_Buffer[Counter_Num1]=(char)USART_ReceiveData(USART1);
Counter_Num1++;
if(Counter_Num1==100)
{
Counter_Num1=0;
}
}
}
bucle principal: en algunas coincidencias primarias funciona bien (cuando escribo "hola", devuelve "1234") pero después de algunos intentos, devuelve "1234" permanentemente sin coincidencias
Código:
while(1)
{
//--------------------------------------
do
string_pointer = strstr (Rx_Buffer, "hello");
while(string_pointer==NULL);
USART_SendData(USART1, '1');
delay_ms(50);
for(loop_counter=0;loop_counter<100;loop_counter++)
{
Rx_Buffer[loop_counter]=' ';
}
string_pointer=NULL;
USART_SendData(USART1, '2');
delay_ms(50);
USART_SendData(USART1, '3');
delay_ms(50);
USART_SendData(USART1, '4');
delay_ms(50);
//-----------------------------------
}
Estoy usando stm32 & keil.