求教STM32HLA库实现串口2的中断接收,怎么写中断调用函数,或者怎么才能实现功能

2019-07-20 07:12发布

void USART1_IRQHandler(void)                    
{
   
#if SYSTEM_SUPPORT_OS         //使用OS
    OSIntEnter();   
#endif
    if((__HAL_UART_GET_FLAG(&huart2,UART_FLAG_RXNE)!=RESET))
    {
       USART2_RxDispose();
        if (__HAL_UART_GET_IT_SOURCE(&huart2,UART_IT_RXNE)!=RESET)//接收中断
            
         USART2_RxDispose();
        
      HAL_NVIC_ClearPendingIRQ(USART2_IRQn);//清除接收中断标志位
         
  if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_ORE) != RESET)//状态标志位
{
      __HAL_UART_CLEAR_FLAG(&huart2, UART_FLAG_ORE);   //清除状态标志位
     (void)HAL_UART_Receive_IT(&huart2,RxBuffer,1);
  }
    }
    HAL_UART_IRQHandler(&huart2);   
#if SYSTEM_SUPPORT_OS         //使用OS
    OSIntExit();                                               
#endif
}





uint8_t Uart2_PutChar(uint8_t ch)
{
    /* Write a character to the USART */
    HAL_UART_Transmit(&huart2,(uint8_t *)&ch,100,0x1fff);//向串口2发送U8里面的数据   
    while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TC)!=SET);        //等待发送结束
    return ch;
}

/*******************************************************************
功能:    写串口2函数
描述:    往串口2发送数据,用到以下全局变量:
参数:    sentchar-发送数据缓冲区
        length-发送数据长度
返回值:无
*******************************************************************/

void WriteComm2(uint8_t *buffer,uint32_t count)
{
    uint32_t iCnt;
    for(iCnt=0;iCnt<count;iCnt++)
    {
        Uart2_PutChar(buffer[iCnt]);
    }
}
   
        
void USART2_RxDispose(void)
{
    unsigned char ucRece;
   
    ucRece = HAL_UART_Receive_IT(&huart2,RxBuffer,1);//Read received data
     
   


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
正点原子
1楼-- · 2019-07-20 09:11
 精彩回答 2  元偷偷看……
遇见11111
2楼-- · 2019-07-20 12:24
修正:是怎样写中断回调函数。

一周热门 更多>