我正在尝试UART
使用STM32F407V6T6
and CubeMx
。
正如我已经发布了一些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
使用传输中断进行传输。传输后,我正在检查某些值,例如hi
in rxBuff[10]
。
在这个特定的代码中,我没有收到任何我刚刚创建的缓冲区并检查它是否包含的东西hi
。
请注意,在传输时,我只发送 7 个字节的数据。但是在HAL_UART_Transmit_IT()
大小我给10的地方。
HAL_UART_Transmit_IT(&huart2,(uint8_t*)"hello\r\n",10);
将此代码闪烁到我的 stm32 后,我可以在终端中看到各种输出,例如
你好\r\n你好
如果我将 txt 从更改为hi
行星之类的其他东西,那么输出将是
你好\r\npl
但是当我给出这样的完美尺寸时
HAL_UART_Transmit_IT(&huart2,(uint8_t*)"hello\r\n",7);
我得到了我应该得到的实际输出
你好\r\n
通过 UART 传输数据并查找某个缓冲区中是否存在子字符串是完全不同的任务。
有什么建议为什么会发生这种情况?
PS:基本上我的项目是使用 GSM MODULE SIM800c 和 STM32f407VGt6 我想从 stm32 发送各种 AT 命令并检查响应,以便我可以相应地工作。
以前我曾用 AVR 系列 mcus 尝试过这个项目,我可以发送短信,接收特定短信,使用 post 和 get 方法将数据发送到服务器,一切正常。
转移到 ARM 后,我不知道 STM32 的表现如何。