我正在尝试UART
使用STM32F407V6T6
and CubeMx
。
我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 *)"AT\r\n", 5);
Orange_Blink(100);
HAL_Delay(1000);
HAL_UART_Receive_IT(&huart2, buff, 10);
buff[9] = '\0';
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
不是以\0
. 所以我做了这个
buff[9] = '\0';
但什么都没有改变。
任何建议为什么它不能与strstr()
.
提前致谢。