
数据的发送 TE标志位 1.要想使串口能够发送数据,必须置位TE标志位,并且在写入发送寄存器TDR之前置位。 2.当TE位置位,会产生一个空闲帧。 3.数据传输过程中,复位TE,会导致数据发送错误,波特率产生器会冻结。 TXE状态标志位 该位由硬件置位,它表示: 1.数据已从 USART_TDR 寄存器移至移位寄存器,并且数据传输已经开始。 2.USART_TDR 寄存器为空。 3.下一个数据可以写入 USART_TDR 寄存器而无需覆盖以前的数据。 如果 TXEIE 置位,会产生一个中断 该标志位清除方法: 1.写入新数据到USART_TDR 2.USART_RQR中的TXFRQ置位刷新该标志位 TC标志位 该标准位代表发送结束,如图。 ![]() 发送数据的配置顺序 1.配置CR1寄存器的M标志位,即配置数据长度; 2.配置波特率; 3.配置停止位长度; 4.通过置位CR1的UE标志位使能USART模块; 5.如果需要配置DMA可在CR3寄存器配置DMA; 6.置位CR1寄存器的TE标志位,发送一个空闲帧; 7.将要发送的数据写入TDR寄存器,如果在单数据传输模式,TXE会被清除; 8.最后一个数据被写入TDR寄存器后,等待TC标志位置位,表示最后一帧数据发送完成。 数据的读取 RXNE状态标志位 当该标志位置位,代表: 1.移位寄存器的内容被传送到TRD寄存器,可读; 2.如果使能RXNEIE标志位可产生中断 接收数据的配置顺序 配置CR1寄存器的M标志位,即配置数据长度; 配置波特率; 配置停止位长度; 通过置位CR1的UE标志位使能USART模块; 如果需要配置DMA可在CR3寄存器配置DMA; 置位CR1寄存器的RE标志位,RX开始寻找起始帧。 ![]() ![]() fCK在RCC_CGFR3寄存器中配置 ![]() 例: SYSCLK频率为72MHz,想要得到19200的波特率,则: 将USARTSW配置为01,即SYSCLK 19200 = 72000000 / USARTDIV OVER8不置位 则BBR = 3750十六进制为0x0EA6。 注意: 1.如果调试过程中,单片机读不到数据,但是能发送数据,可能是外部没有上拉,此时可以配置引脚内部 上拉进行调试,有了上拉以后,串口才能读 到数据 2.Modbus的地址为1,实际发出的地址是0;CAN的地址为1,实际发送的也是1。两种协议的区别。 3.不清除中断标志位会导致一直进入中断,可在中断中关闭中断使能从而避免一直进入中断 附录 寄存器|初始化
———————————————— 版权声明:Vice Versa XL |
经验分享 | 基于STM32H7 UART 空闲事件及DMA传输示例
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32H563 UART+DMA 2D功能演示
经验分享 | 基于STM32H563演示UART+DMA功能
【STM32U3评测】实现双通道串口通信系统
STM32G系列RS485自动收发控制以及自适应波特率实战
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
【STM32MP135-DK】裸机移植shell
NUCLEO-U545RE-Q评测】3. 串口基本收发测试
NUCLEO-U545RE-Q评测】4. 串口实用收发测试