W806串口3接收433M接收模块后,串口3数据接收一直是0x00

发布于 2025-08-05 18:15:29

W806串口3接收433M接收模块后,串口3数据接收一直是0x00。使用ttl转USB连接电脑测试时,串口工具并没有一直打印0x00,同样的串口3初始化配置,接别的串口数据也没有问题,针对接433M接收模块需要什么别的配置吗?
int main(void)
{

printf("-MCU---StartUp-");
// GPIO_Init4G();
HAL_Init();
SystemClock_Config(CPU_CLK_160M);
 UART3_Init();             // 初始串口2
HAL_UART_Receive_IT(&huart3, rxbuff1, IT_LEN); // 使用HAL库的


while (1)
{
    if (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) == GPIO_PIN_RESET){
        printf("h");
    }else{
        printf("f");
    }
            HAL_Delay(100);
}
return 0;

}

// 串口3 初始化
static void UART3_Init(void)
{

huart3.Instance = UART3;
huart3.Init.BaudRate = 9600;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
huart3.Init.Mode = UART_MODE_TX | UART_MODE_RX;
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
if (HAL_UART_Init(&huart3) != HAL_OK)
{
    Error_Handler();
}

// 清空接收缓冲区
memset(rxbuff1, 0, sizeof(rxbuff1));
// 启动接收中断
HAL_UART_Receive_IT(&huart3, rxbuff1, 24);

}
printf("433接收数据: ");

    for (int i = 0; i < RXBUFFERSIZE; i++)
    {
        printf("0x%02X ", rxbuff1[i]); // 以十六进制打印,清晰查看数据
    }
    printf("\r\n");

    // 清空缓冲区并重启接收中断(关键!)
    memset(rxbuff1, 0, sizeof(rxbuff1));
    
    
    ![image.png](/uploads/20250805/c2515ac1752a9e99a5bff7f5e55ccf6b.png)

查看更多

关注者
0
被浏览
48
1 个回答
abcd
abcd 认证专家 1天前
我只是个路过的老年人~

同样的初始化,先把串口3接到pc上,用pc端串口工具给W806发数据,看打印出来是否正确。如果正确,那就需要看433M接收模块的相关资料,看是否需要什么初始化。另外注意两个模块之间的IO电平是否一致,都是3.3v吗。

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览