×
单片机 > 单片机程序设计 > 详情

STM32 UART2 中断函数的写法

发布时间:2020-08-24 发布时间:
|

void USART2_IRQHandler(void)
{
 uchar tmp;
 //接收中断
 if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)  // 接收 中断
 {
  USART_ClearITPendingBit(USART2,USART_IT_RXNE); // U1RX_Clear_Intr_Status_Bit;
  tmp=USART_ReceiveData(USART2);
  }
 //USART_IT_TXE // 发送中断
 if( USART_GetITStatus(USART2, USART_IT_TXE) == SET  ) //一个是TXE=发送数据寄存器空,
 {
  if(TIndex2 < TCount2)
  {
   USART_SendData(USART2, TxBuf2[TIndex2++]);         
  }
  else if(TIndex2 == TCount2)
  {
   USART_SendData(USART2, 0x0D);
   TIndex2 ++;
  }
  else
  { // 因为是 发送寄存器空 的中断,所以发完字符串后必须关掉,
   // 否则只要空了,就会进中断  //送數據寄存器空標志位 
   //fTransmission_Complete=1;
   USART_ITConfig(USART2, USART_IT_TXE, DISABLE);                                                  
   //DIS_485TX();  为避免提前关闭,导致的发送不全.移至 外部Timer中控制.   
  }
 }
 //溢出-如果发生溢出需要先读SR,再读DR寄存器 则可清除不断入中断的问题
 if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
 {
  USART_ClearFlag(USART2,USART_FLAG_ORE); // 读SR
  USART_ReceiveData(USART2);    // 读DR
 }

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义