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)
433 平时通讯端口为低电平, 能将 W806MCU 串口为 "空闲低" 模式吗?
@why710 uart 协议规定的空闲状态是高电平.