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外设 }
热门产品 :
CH592: RISC-V内核BLE5.4无线MCU