我正在尝试使用STM32F407V6T6
和CubeMx
UART
。
我的UART
工作正常。 我在比较缓冲区时遇到的问题:我使用strstr()
来检查我的缓冲区是否包含有效的子字符串。
这是代码:
uint8_t buff[10]; int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); Green_Blink(100); Orange_Blink(100); Blue_Blink(100); Red_Blink(100); __HAL_UART_ENABLE_IT(&huart2, UART_IT_TC); __HAL_UART_ENABLE_IT(&huart2, UART_IT_RXNE); HAL_Delay(1000); while (1) { HAL_UART_Transmit_IT(&huart2, (uint8_t *)"ATrn", 5); Orange_Blink(100); HAL_Delay(1000); HAL_UART_Receive_IT(&huart2, buff, 10); buff[9] = ' '; if (buff[6] == 'O' && buff[7] == 'K') { Green_Blink(1000); //Blinks } if (strstr((char*)buff, "OK")) { Red_Blink(1000); //Doesn't blink } Clear_Buffer((char*)buff); } }
我在这里正在做的是我连接了我的GSM Module Sim800
并且我发送了AT
。 调试完代码后,我发现buff[6] = 'O'
和buff[7] = 'K'
。 同时检查我是否可以使LED闪烁。
if (buff[6] == 'O' && buff[7] == 'K') { Green_Blink(1000); //Blinks }
但是当我尝试函数strstr()
它不会返回任何内容。
if (strstr((char*)buff, "OK")) { Red_Blink(1000); //RED LED DOENS'T Blink }
起初我以为我的数组buff
不是以