串口接收
串口接收流程
- 编程USARTx_CR1的M位来定义字长。
- 编程USARTx_CR2的STOP位来定义停止位位数。
- 编程USARTx_BRR寄存器确定波特率。
- 使能USARTx_CR1的UE位使能USARTx。
- 如果进行多缓冲通信,配置USARTx_CR3的DMA使能(DMAT)。
- 使能USARTx_CR1的RE位为1使能接收器。
- 如果要使能接收中断(接收到数据后产生中断),使能USARTx_CR1的RXNEIE位为1。
当串口接收到数据时
- USARTx_SR(ISR)的RXNE位置1。表明移位寄存器内容已经传输到RDR(DR)寄存器。已经接收到数据并且等待读取。
- 如果开启了接收数据中断(USARTx_CR1寄存器的RXNEIE位为1),则会产生中断。(程序上会执行中断服务函数)
- 如果开启了其他中断(帧错误等),相应标志位会置1。
- 读取USARTx_RDR(DR)寄存器的值,该操作会自动将RXNE位清零,等待下次接收后置位。