初级会员

- 积分
- 108
- 金钱
- 108
- 注册时间
- 2020-11-16
- 在线时间
- 19 小时
|
下位机通过串口一直给STM32f103c8t6上位机发送数据,然后上位机进行计算,最近发现一个问题:
1. 我每次都得先开下位机让数据开始发送,然后再给上位机供电,这样才能正常运行;
2. 比如测试过程中,突然吧下位机断电,导致上位机接收不到数据,上位机直接就死机了(stm32直接不工作了),重启后问题解决。
这是怎么回事呢?单片机的串口接收是用中断接收数据的,下面是中断接收数据的代码:
- if(LL_USART_IsActiveFlag_RXNE(USART2)) //判断USART2是否接收到数据
- {
- Rx_buff[RxCounter++]=LL_USART_ReceiveData8(USART2);
- if(Rx_buff[0]==0x24&&Rx_buff[13]==0xFF&&RxCounter==14)
- {
- Rxflag=1;
- RxCounter=0;
- }
- if (RxCounter==14)
- RxCounter=0;
- LL_USART_ClearFlag_ORE(USART2); //清除ORE
- }
复制代码 在主函数里面直接开启中断:
- LL_USART_EnableIT_PE(USART2); //开启串口总中断
- LL_USART_EnableIT_RXNE(USART2); //开启串口2接收中断
- LL_USART_EnableIT_ERROR(USART2); //开启串口2错误中断
复制代码 在while(1)里面不停的检测数据标志位,对每一帧数据进行计算处理
这个是哪里的问题呢?停止接收数据后为啥直接就死机了呢?
|
|