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
被浏览
78
1 个回答
abcd
abcd 认证专家 3 天前
我只是个路过的老年人~

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

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览