0

我正在使用 STM32F103C8 板和 CubeMX 创建代码。我已将 M66 连接到 STM32 到 UART2 端口。我尝试通过 STM32 的 UART 端口向 Quectel M66 发送一些命令。它接收命令但抛出一些垃圾字符。我已将所有 UART 端口的波特率设置为 9600。这是我的代码

void M66_Check()
{
  char *buffer = "ATI\r\n";
    char *rec_buffer = NULL;
    rec_buffer = (char*)malloc(200 * sizeof(char));
    if(HAL_UART_Transmit(&huart2,buffer,strlen(buffer),200) == HAL_OK)
    {
        printf("AT Command sent successfully\r\n");
        HAL_Delay(1000);
    }
    else
    {
        printf("Not Sent\r\n");
    }
    HAL_UART_Receive(&huart2,rec_buffer,50,200);

    printf("About to print Response from M66 \r\n");
    HAL_Delay(2000);

    printf(rec_buffer);

}

这就是我得到的......结果腻子 任何帮助将不胜感激

4

2 回答 2

0

我发现了问题......我需要以这些格式发送和接收......我错过了那些(uint8_t *)。发送 - HAL_UART_Transmit(&huart2, (uint8_t *)buffer, strlen(buffer), 100);

接收 - HAL_UART_Receive(&huart2, (uint8_t *)rec_buffer,50,2000);

现在没有问题,我得到了正确的响应。

谢谢你的帮助...

于 2019-05-10T06:36:20.597 回答
0

有唯一的方法 - 阅读答案并解析它。然后你就会知道命令是否执行正常。

但是您的响应表明您的 UART 运行速度比调制解调器快(9600)。如果您没有更改任何内容,则应为 115200,因为它是默认的调制解调器 UART 速度

于 2019-05-09T12:50:19.593 回答