CH32V307 UART中断接受多个16进制数据时只能接受列表的第一个,新手求教

CH32V307 UART3中断接受多个16进制数据时只能接受列表的第一个,想要接收摄像头模块的返回数据,但是发现UART3每次只能接受摄像头发送数据的第一个。同样的UART以及NVIC中断初始化在UART2中则不存在这个问题。不知道这是什么原因导致的,求教。

代码如下:

void USART3_Camera_Init(void)
{
    uart_init(UART_3, 38400, B10, B11);
    
}

void USART3_Camera_Init_IT(void)
{
            /*UART3输入中断使能*/
            USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);              

            /*NVIC配置*/
            NVIC_InitTypeDef NVIC_InitStructure;                        //定义结构体变量
            NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;             //选择配置NVIC的USART1线
            NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;             //指定NVIC线路使能
            NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;   //指定NVIC线路的抢占优先级为0 比无线通讯抢占优先级(2)高
            NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;          //指定NVIC线路的响应优先级为1
            NVIC_Init(&NVIC_InitStructure);                             //将结构体变量交给NVIC_Init,配置NVIC外设
}

//下面是UART2的初始化
void UART1_HC14_Init(void)
{
    uart_init(UART_1, 9600, A9, A10);
}

void USART1_HC14_Init_IT(void)
{
            /*UART1输入中断使能*/
            USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);              

            /*NVIC配置*/
            NVIC_InitTypeDef NVIC_InitStructure;                        //定义结构体变量
            NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;             //选择配置NVIC的USART1线
            NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;             //指定NVIC线路使能
            NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   //指定NVIC线路的抢占优先级为1 比临时通讯抢占优先级(2)高
            NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;          //指定NVIC线路的响应优先级为1
            NVIC_Init(&NVIC_InitStructure);                             //将结构体变量交给NVIC_Init,配置NVIC外设
}


可以参考看下CH32V307EVT中USART_Interrupt例程,里面实现了串口3中断接收的功能,对比看下问题原因。

EVT下载链接:/downloads/CH32V307EVT_ZIP.html


只有登录才能回复,可以选择微信账号登录