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
1楼-- · 2019-07-22 00:08
login_FAE 发表于 2019-3-28 16:52
你的传感器数据量是不是很大

差不多可以这么认为,就属于源源不断的有数据进入,但我是隔几毫秒取一组用隔几毫秒取一组用
触电丶
2楼-- · 2019-07-22 04:04
是不是串口1和串口2的输出你都重定向了?最好把源码贴上来看一下
atalanta
3楼-- · 2019-07-22 08:33
 精彩回答 2  元偷偷看……
atalanta
4楼-- · 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);
        }
}
atalanta
5楼-- · 2019-07-22 17:18
触电丶 发表于 2019-3-31 10:19
是不是串口1和串口2的输出你都重定向了?最好把源码贴上来看一下

只重定向了1

一周热门 更多>