STM32串口2寄存器USART_DR赋值问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32串口2寄存器USART_DR赋值问题相关的知识,希望对你有一定的参考价值。
STM32仿真:*wd的值是0x41,赋值后USART2->DR的值竟然是0x0047,请问是什么原因呢
DR其实是由两个寄存器组成的,一个给发送用(TDR),一个给接收用(RDR)。给DR赋值后串口模块立即通过TDR移位发送出了,并不会保存下来。你读DR时其实是串口RDR接收到的数据。追问明白,谢谢,再请教一下,如何判断发送出去的值是正确的
参考技术A补充楼上老哥。同51单片机,你可以将DR认为一个单片机可直接寻址的寄存器,每次发送数据,首先将数据传送给DR,紧接着传送给发送移位寄存器(并行串出);接收时数据首先进入接收移位寄存器(串入并出),需要读取时,DR从接收移位寄存器获得数据。
keil和jlink仿真调试stm32串口时,怎么一直看不到接收寄存器变化?程序不仿真直接运行是正
keil和jlink仿真调试stm32串口时,怎么一直看不到接收寄存器变化?程序不仿真直接运行是正确的
这说明你对单片机串口的结构不了解。串口接收部分有一个移位寄存器和一个保持寄存器,每次读操作都会导致移位寄存器的内容被移到保持寄存器里。悲催的是,只要你调试时监控接收寄存器,那么仿真器是不停对串口进行读操作的……
所以对串口进行硬件调试是有一定技巧的。一般应当在接收处理时将接收到的数据(连同各标志)全部移到一个调试用的缓冲区中,开发人员通过对缓冲区中数据和标志的情况进行分析,判定串口部分工作是否正常。 参考技术A 不要单步去看寄存器变化,你把断点设在接收之后的一条语句再看。追答
不要单步去看寄存器变化,你把断点设在接收之后的一条语句再看。
以上是关于STM32串口2寄存器USART_DR赋值问题的主要内容,如果未能解决你的问题,请参考以下文章
STM32请问串口要发送数据“1”该怎么赋值给USART->DR寄存器?