打印
[STM32F1]

STM32串口全局运行接收数据异常?

[复制链接]
1246|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
it_yrj|  楼主 | 2014-7-16 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
之前在其他的应用中可以正常工作,因为更换了硬件电路,在使能接收模式的时候会自动回复一个字符0,所以先使能接受模式后开启的接收中断,但是
利用串口调试助手周期发送字符,在串口中断中收到什么发送什么,但是在单步运行的时候可以正常收发,全局运行的时候有时收到的数正确有时就不正确,
大多数情况下收到的数据是错的,试着加了延时,还是不行,这种情况出现的原因有哪些呢?还请大神们指教啊!
void USART1_IRQHandler(void)
{
  //接收中断
  unsigned char temp_trx;
  if(USART_GetITStatus(USART1,USART_IT_RXNE)==1)
  {
    OS_CPU_SR cpu_sr;
    OS_ENTER_CRITICAL();
   
    USART_ClearITPendingBit(USART1,USART_IT_RXNE); /*清接收中断标志*/
    temp_trx=USART_ReceiveData(USART1); /*读取接收数据*/
  
    St2Pt_EN();/*RS485使能 ST输出到Pt   //转为输出模式*/
    delay(10);
    Uart1_SendByte(temp_trx);    //*将接收到的数据发送出去*/
    Pt2St_EN(); /*RS485使能 PT输出到St   //发送完成之后改为接收状态*/
    delay(10);
    OS_EXIT_CRITICAL();
  }
  //发送完成中断
   if(USART_GetITStatus(USART1,USART_IT_TXE)!=RESET)
  {
    USART_ClearITPendingBit(USART1,USART_IT_TC); /*清发送寄存器空标志*/
                USART_ITConfig(USART1,USART_IT_TXE,DISABLE); /*DISABLE 发送完成中断 */
               
    Pt2St_EN();/*RS485使能 PT输出到St。发送完成之后改为接收状态*/
                /*此语句会触发一次接收中断(0xBB),注释掉之后,可以正常的发送数据*/
  }
}


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

614

帖子

0

粉丝