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));

433平時通訊端口為低電平,能將W806MCU 串口為 “空閑低” 模式嗎?
@why710 uart協議規定的空閑狀態是高電平。