16
50
0
初级会员
我的首次串口发送总是丢掉数组里的第一个数,后面的就都正确了,
比如说:
TX[]={1,2,3,4,5};
for(i=0;i<5;i++) { USART1->DR=TX; while((USART1->SR&0X40)==0);//等待发送结束 } 程序里循环发几次
问题是:
第一次发的时候,串口助手上显示2,3,4,5
第一个数丢了,但发到第二遍时就正确了,
求解释。。。。。。。。。。。。。
(后来我是在发需要的数据之前自己先发了个无用的数,后面再发就都正确了)
使用道具 举报
6
37
38
527
1
金牌会员
回复【4楼】一世的约定: 回复【2楼】xtvv: --------------------------------- 试了下,还真行。。。呵呵,大侠能解释下原因不? ------------------------------- u8 temp; temp=USART1->SR; for(i=0;i<5;i++) { USART1->DR=TX; while((USART1->SR&0X40)==0);//等待发送结束 } 或者
USART1->SR&=~(0x40); for(i=0;i<5;i++) { USART1->DR=TX; while((USART1->SR&0X40)==0);//等待发送结束 } 因为第一次发送时候没有清除TC位(没有读取USART1->SR,读取USART1->SR可以清除该位)。
新手入门
本版积分规则 发表回复 回帖后跳转到最后一页
查看 »
正点原子公众号
|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )
GMT+8, 2025-7-19 12:49
Powered by OpenEdv-开源电子网
© 2001-2030 OpenEdv-开源电子网