学习笔记:UART(二)

学习笔记:UART(二)_第1张图片设计一包数据可以参考这样设计

int fputc(int ch, FILE *f)
{
    usart_data_transmit(g_uartHwInfo.uartNo, (uint8_t)ch);
    while (RESET == usart_flag_get(g_uartHwInfo.uartNo, USART_FLAG_TBE));
    return ch;
}
这是重定向,然后就可以使用printf打印调试。

void USART0_IRQHandler(void)
{
    if (usart_interrupt_flag_get(g_uartHwInfo.uartNo, USART_INT_FLAG_RBNE) != RESET)
    {
        usart_interrupt_flag_clear(g_uartHwInfo.uartNo, USART_INT_FLAG_RBNE);
        uint8_t uData = (uint8_t)usart_data_receive(g_uartHwInfo.uartNo);
        ProcUartData(uData);
    }
}

接受数据需要中断,发送是不用中断的。使用获取标志位是用函数

/* get USART interrupt and flag status */
FlagStatus usart_interrupt_flag_get(uint32_t usart_periph, usart_interrupt_flag_enum int_flag);

而不是

/* get flag in STAT0/STAT1 register */
FlagStatus usart_flag_get(uint32_t usart_periph, usart_flag_enum flag);

不知道可不可用下面这个函数,然后RBNE寄存器位当有接受的数据时为1 没有则为0。在中断里要记得清除中断标志位。

你可能感兴趣的:(学习,笔记)