在USART1_IRQHandler中,可以通过读取USART_SR寄存器中的RXNE位来判断是否接收到了数据。RXNE位为1表示接收到了数据,此时可以通过读取USART_DR寄存器获取接收到的数据。在处理完接收到的数据后,需要清除RXNE位,以便后续的接收。具体代码如下:

void USART1_IRQHandler(void)
{
    if(USART1->SR & USART_SR_RXNE) // 检查RXNE位,判断是否接收到了数据
    {
        uint8_t data = USART1->DR; // 读取接收到的数据
        // 处理接收到的数据
        USART1->SR &= ~USART_SR_RXNE; // 清除RXNE位
    }
}

需要注意的是,在使用USART接收数据时,需要在初始化USART时开启接收中断。具体代码如下:

USART_InitTypeDef USART_InitStruct;
USART_InitStruct.USART_BaudRate = 115200;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_Init(USART1, &USART_InitStruct);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // 开启接收中断
``

原文地址: https://www.cveoy.top/t/topic/fep8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录