【NUC140】如何清除UART接收、发送标志位?

嵌入式小菜鸟 |浏览2328次
收藏|2015/04/25 18:00

stm32的例子:
void USART1_IRQHandler(void)
{
  //发生接收中断
  if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
  {
    prvvUARTRxISR(); 
    //清除中断标志位    
    USART_ClearITPendingBit(USART1, USART_IT_RXNE);   
  }
  
  //发生完成中断
  if(USART_GetITStatus(USART1, USART_IT_TC) == SET)
  {
    prvvUARTTxReadyISR();
    //清除中断标志
    USART_ClearITPendingBit(USART1, USART_IT_TC);
  }
}
如果140仿写这段代码,是不是这样:

void UART_RDAINT_HANDLE(void)
{
        while(UART0->ISR.RDA_IF==1)
        {
//                  xMBPortSerialGetByte("");
                 prvvUARTRxISR();

                }
}

void UART_THREINT_HANDLE(void)
{
        while(UART0->ISR.THRE_IF==1)
        {
//                 xMBPortSerialPutByte(NULL);
                 prvvUARTTxReadyISR();

                }
}

满意回答

2022/09/06 16:55

下载我们的NUC140的 BSP , 里面有 UART 收发的例子代码。

接收中断要把接收到的数据读出来,然后再清接收中断,否则还会发生中断。

发送空中断——只要发送缓存空了就中断,所以若无后续数据可发送,要关中断才不会再发生中断。

Angus

其他回答(0)
0人关注该问题
+1
 加载中...