gpt4 book ai didi

c - 使用 strstr() 后,子字符串也通过 uart 传输

转载 作者:行者123 更新时间:2023-11-30 21:14:02 25 4
gpt4 key购买 nike

我正在尝试UART使用STM32F407V6T6CubeMx

正如我发布的一些问题 strstr()功能。这是一些新问题。

这是代码:

char rxBuff[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);
while (1)
{

HAL_UART_Transmit_IT(&huart2,(uint8_t*)"hello\r\n",10);
HAL_Delay(1000);
Orange_Blink(100);
if (strstr(rxBuff,"hi"))
{

}
}
}

我正在做的是发送hello\r\n使用发送中断。传输后,我正在检查某些值,例如 hirxBuff[10] .

在这个特定的代码中,我没有收到任何内容,我刚刚创建了缓冲区并检查它是否包含 hi或不。

请注意,在传输时我只发送 7 个字节的数据。但在 HAL_UART_Transmit_IT()在大小的地方我给 10。

HAL_UART_Transmit_IT(&huart2,(uint8_t*)"hello\r\n",10);

将此代码刷新到我的 stm32 后,我可以在终端中看到各种输出,例如

hello\r\nhi

如果我将文本从 hi 更改为对于诸如行星之类的其他事物,那么输出将类似于

hello\r\npl

但是当我给出这样的完美尺寸

HAL_UART_Transmit_IT(&huart2,(uint8_t*)"hello\r\n",7);

我得到了我应该得到的实际输出

hello\r\n

通过 UART 传输数据和查找某个缓冲区中是否存在子字符串是完全不同的任务。

有什么建议说明为什么会发生这种情况吗?

P.S:基本上我的项目是使用 GSM 模块 SIM800c 和 STM32f407VGt6我想从stm32发送各种AT命令并检查响应,以便我可以相应地工作。

之前我曾使用 AVR 系列 MCU 尝试过这个项目,我可以在其中发送短信、接收特定短信、使用 post 和 get 方法将数据发送到服务器,一切都工作得很好。

迁移到 ARM 后,我不明白 STM32 的行为方式。

最佳答案

这与strstr函数无关。您告诉 HAL_UART_Transmit_IT 读取超出数组末尾的内容(字符串文字)“hello\r\n”。任何人都可以猜测它会发现什么,这是未定义的行为。

关于c - 使用 strstr() 后,子字符串也通过 uart 传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51842400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com