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
被浏覽
79
1 個回答
abcd
abcd 認證專家 3天前
我只是個路過的老年人~

同樣的初始化,先把串口3接到pc上,用pc端串口工具給W806發數據,看打印出來是否正確。如果正確,那就需要看433M接收模塊的相關資料,看是否需要什麼初始化。另外注意兩個模塊之間的IO電平是否一致,都是3.3v嗎。

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽