打印

STM32串口同步方式工作的问题

[复制链接]
3306|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
byeyear|  楼主 | 2009-5-15 11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的CPU是STM32F103ZET6,usart3, full remap, 工作在同步方式下,tx和rx接成loopback,程序如下:
USART_ClockInitStructure.USART_Clock = USART_CLOCK_ENABLE;
cpol=1
cpha=1
baudrate=115200
wordlength=8
stopbit=1
no parity
no hw flow control
enable rx, enable tx

while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
USART_SendData(USART3, 0z55);           // <<<<<<<<<<<<<<<<<<<< 1
while(USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);
USART_SendData(USART3, 0zAA);           // <<<<<<<<<<<<<<<<<<<< 2
while(USART_GetFlagStatus(USART3, USART_FLAG_RXNE) != RESET)
{
 x = USART_ReceiveData(USART3);         // <<<<<<<<<<<<<<<<<<<< 3
}

按我的想法,前面发送了两个字节,即使没有及时Receive,也应该接收到两个字节,一个在RDR,一个在Receive Shift Register,结果3处的循环只跑了1次,就是说只接收到一个字节(0x55). 即使在循环后再读一次,还是0x55, 第二次发送的0xaa丢失了?

本来是用中断做的,接spi外设,full duplex,结果发现接收数据有丢数现象。接成loopback用查询方式做测试,发现上述问题。程序问题乎?bug乎?盼解答。
沙发
byeyear|  楼主 | 2009-5-15 11:42 | 只看该作者

补充一下,用的是3.0的库

补充一下,用的是3.0的库

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

296

帖子

0

粉丝