stm32f103串口1和串口2冲突问题,求指教

2019-07-21 03:39发布

是这样的,现在需要同时用到串口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);
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
atalanta
2019-07-22 12:56
atalanta 发表于 2019-4-1 14:18
问题解决啦,虽然设置了中断优先级,但是仍然存在接收冲突的情况,于是在串口初始化中不再使能串口,写了一 ...
标志位的改变在处理数据的子程序和中断服务程序中
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);
        }
}

一周热门 更多>