对USART有了一定的了解,在此总结
Rx
- 使用RX有一个相关寄存器,RDR
- 有两个重要中断:
- RXNE接收寄存器不为空中断(也就是接收到数据就置1,通过对USARTx_RDR 寄存器执行读入操作将该位清零,也就是我们取出数据后自动置0)
- RTOF超时中断
需要启用和设置,用于接收不定长数据的中断,手动设置多长时间未收到数据触发该中断进行处理
TX
- 使用Tx有两个相关寄存器,TDR和移位寄存器
- 需要有一些基础认识:
- TXE是TDR为空判断标志位,TC是移位寄存器发送完成标志位
- 当TDR寄存器为空,硬件会将TXE位置1,这个位需要手动置0;当移位寄存器发送完成,硬件会将TC位置1,这个位需要手动置0
- 只用往TDR寄存器中放数据就好了,其他都是自动的,然后根据TXE和TC标志位判断下次数据是否可以往TDR放了
- 梳理一下简单的发送步骤:
- TDR一开始是空的,TDR为空的判断标志位是ISR寄存器中的TXE位,为了可以使用TXE需要将CR1寄存器的TXEIE位置1(置EXTIE为1会直接触发EXT一次);
- TXEIE置1后就可以在USARTx_IRQHandler中根据TXE判断TDR是否为空,来对TDR寄存器进行数据的写入了,并软件清掉XTE标志位