串口接收流程:
串口接收的一部分流程与发送时的配置很类似,具体如下所示:
其中第六步使能的是接收器,第七步是接收中断的使能位,接收中断即在接收到数据后通过产生中断来进行相应的处理。
具体配置过程:
首先:调用HAL_UART_Init函数
然后:HAL_UART_Receive_IT函数开启接收中断
当串口接收到数据时:
1.USARTx_ISR的RXNE位置1。表明以为寄存器的内容已经传输到RDR寄存器。已经接收到数据并且等待读取。
2.如果开启了接收数据中断,则会产生中断,程序上会执行中断服务函数。
3.读取USARTx_RDR寄存器的值,该操作会自动将RXNE位清零,等待下次接收后置位。
具体配置过程:
首先:利用HAL_UART_GET_FLAG 标志位或者使用_HAL_UART_GET_IT_SOURCE判断中断标志位。
然后:进入中断服务函数USART_IRQHandler();
最后:利用HAL_UART_Receive函数读取接收数据。
最后,对于配置过程再来一个最后总结,如下图所示:
但在实际应用中,我们通常会在中断服务函数中调用,HAL库中的HAL_UART_IRQHandler即通用中断服务函数来进行操作。然后通用中断服务函数会判断中断的类型从而再次调用不同的函数来处理中断。具体过程如下图