初级会员 
  
	- 积分
 - 143
 
        - 金钱
 - 143 
 
       - 注册时间
 - 2019-10-23
 
      - 在线时间
 - 71 小时
 
 
 
 | 
 
10金钱 
 本帖最后由 wfyggi 于 2022-5-3 23:26 编辑  
 
大家好,请问大家是否有跟我一样的情况。使用串口2,每隔100mS发送一次数据包并且同时串口会有返回一个数据,刚开始工作正常,但是偶尔会有一次将主程序卡死,后面多次分析,每卡死的位置都是串口发送完成判断这里 “ while((USART2->SR&0X40)==0)” 。 
void UART2_send_Buf(u8 *stl,u8 Size,u8 a,u8 b,u8 c) 
{ 
    if(b==1) 
    {                         
                while(Size--) 
                {         
                  USART2->DR=*stl;              // 赋值到串口数据寄存器                                         
                  while((USART2->SR&0X40)==0);   // USART1_SR_TC 等待串口发送结束                         
                  stl++; 
                }         
    } 
} 
 
 
 
UART2_send_Buf(str,6,0,1,0);   // str是一个数组:30 33 30 39 31 30 
 
 
希望对串口比较熟悉的朋友能一起讨论,指导一下,谢谢! 
 
 
 |   
 
 
 
 
 
 |