是这样的,现在需要同时用到串口1和串口2接收数据,然后进行计算什么的,最后通过串口1打印到PC端,串口1和串口2接收的数据类型相同,波特率相同,是同样的传感器,换言之,串口1和串口2同时有大量数据输入,现在的问题是,串口1或者串口2单独工作时都能正常工作,但当串口1接收数据正常工作时,只要PA3(USART2的RX)连接传感器数据发送端,程序立刻卡死,此时如果断开PA3的连接,程序不能恢复,PA3断开状态下复位后可恢复。中断优先级配置附后,所以求教是哪里出了问题,需要哪些程序段我会及时附上,然后之前有看到一个帖子说可能是假溢出,但没怎么看懂,求教
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
差不多可以这么认为,就属于源源不断的有数据进入,但我是隔几毫秒取一组用隔几毫秒取一组用
void oc_sensor(void){
if(oc_flag==1){ //收集数据
if(u_flag==1){ //开u1关u2
USART_ITConfig(USART2,USART_IT_RXNE,DISABLE);
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE);
}
else{ //u_flag=0
USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
USART_Cmd(USART2,ENABLE);
}
}
else{ //oc_flag=0
USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);
USART_ITConfig(USART2,USART_IT_RXNE,DISABLE);
}
}
只重定向了1
一周热门 更多>