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 收发的例子代码。
接收中断要把接收到的数据读出来,然后再清接收中断,否则还会发生中断。
发送空中断——只要发送缓存空了就中断,所以若无后续数据可发送,要关中断才不会再发生中断。