永发信息网

AVR 串口通讯没有数据发出 串口缓冲器总不为空

答案:1  悬赏:80  手机版
解决时间 2021-03-25 08:55
AVR 串口通讯没有数据发出 串口缓冲器总不为空
最佳答案
你要判断UDRE位的状态应该用 if( UCSRA&(1<我刚才在等答案的时候直接把if语句改成了if( UDRE && My_UART_TxBuf.number == 0) 这样只要UDRE不为0, 前面半个就为真 这样写可以吧? 这样改了一下串口能收到了,不知道写法合不合理。
另外一个问题,串口每次能收到3个字节,比如我在main中每秒调用一次 UART_TxByte(0xff) 函数和 UART_TXC() 函数 应该只发出一个字节吧?追答第一个问题对于UDRE位是正确的;
第二个问题,不可以,UDRE是一个宏定义 #define UDRE 5 ,它是常量5,逻辑总是真。
第三个问题,不清楚原因,那你收到的三个字节对吗?是0xFF吗,如果不是可能波特率不匹配。追问奥 对 宏定义 是常数5……
我看datasheet上说 UDRE一定要为空才能写入数据,否则发送器会忽略发送的数据,也就是说不管我这里怎么写,单片机只有实实在在知道UDR里面空了 才会让我发出对吧?
是的,发出来的都对,每秒三个ff发出,波特率没问题吧应该,如果有问题应该是乱码的吧。追答当你写UDR时是把数据写入了缓冲寄存器,单片机会自动判断现在是否有数据正在发送,若没有它将把缓冲寄存器中数据移入移位寄存器(正在发送到数据在这里),并置位UDRE位,这是就又能够往缓冲寄存器写数据了,若当前有数据真正发送(移位寄存器数据还没发完)则他会等当前数据发完后再把缓冲寄存器的数据移入移位寄存器,并置位UDRE,在此期间不能往UDR中写新的数据。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
用人排出h个行的电影叫什么
玩吃鸡这几款耳机那款好?
《傻春》电视剧结局是什么?
关于范蠡和紫砂陶的所有故事!要全,范蠡的生
社牧,是那个时代的诗人?
1/3(X+1/15)=2/15
扬州话和淮安话有区别吗
天猫超市满减是自动减的吗
如果拒交水费有什么后果??
驾驶证期满了,换证可以直接在网上办理吗
2本c类一年学费大多少钱
有色金属铅和铜哪个比重沉
徐州什么地方放生乌龟好
韩文胡文我爱你怎么你
浙江嘉兴对接上海的1号线地铁在建吗?什么时
推荐资讯
食盐、纯碱、食醋等均为家庭厨房中常用的物质
原油应该怎么做单?
求一本书: The undocumented PC:a programme
什么贷款软件可以下款6000-1000的
折桂令·客窗清明求翻译拜托了各位 谢谢
美瞳最自然的直径是不是14.2,就是和瞳孔一样
漳州恒盛农业有限公司这个地址在什么地方,我
行动计划怎么写?
红标蓝标什么意思
组态王 如何 现实台达小数点显示
什么是半乳糖不耐受?临床表现是什么?
绿豆冰羹的做法,绿豆冰羹怎么做好吃,绿豆冰
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?