串口试验中 为什么(USART_RX_STA&0x80)==0就表示没接收完成数据

2019-10-14 23:31发布

为什么 (USART_RX_STA&0x80)==0表示接收数据未完成; if(USART_RX_STA&0x40)//接收到了0x0d,,,,这里接收到0x0d又是什么意思? 请问有相关的资料吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
feel
1楼-- · 2019-10-15 18:55
回复【6楼】正点原子:
---------------------------------
如上描述
就是无法调试与仿真,用软件仿真的时候 卡在等待HSE就绪的位置那个

  /* Wait till HSE is ready and if Time out is reached exit */
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++;  
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));


硬件仿真的时候,串口中断会进入。但是发送一串字符串QWERT+回车 。
串口中断只会进入一次Res显示是第一个字符串的ASCII
后面的无效。所以在硬件仿真的情况下,USART_RX_STA无法置位0X80。
MAIN.C while 的循环串口接受完成判断标志就不起作用KK一直为0。


由于4.2的KEIL没有代码提示...编程速度慢,所以我已经升级为KEIL5.0。
调试会不会有可能和这个软件版本有关?
feel
2楼-- · 2019-10-15 20:46
回复【6楼】正点原子:
---------------------------------
原子哥。。。关于KK部分,我百度实在是查询不到。然后一行一行代码注释运行,看大概是那部分影响的。惊奇的发现IF(KK)这里面的delay_ms()不使用延时函数 LED能正常的控制了,但是这个DELAY是你的代码复制过来的啊.....
正点原子
3楼-- · 2019-10-15 22:31
回复【8楼】feel:
---------------------------------
这个实在不影响才对啊。
delay_init,你执行了吧?
feel
4楼-- · 2019-10-15 22:43
回复【9楼】正点原子:
---------------------------------
呜呜呜  原子哥说多了都是泪啊,原来弄arduino U3 做四轴的    串口不够转STM32  给奸商忽悠。。。没查资料!
   现在用到不是你的板子,目前调试出来确实是由于你那个延时导致的。注释就不影响了。

到时候我自己在多去看看SysTick,看能不能找出问题在来汇报。

软件调试的问题,注释了那个DO while 就能进去了很奇怪。但是新建逻辑分析仪的时候  寄存器又不存在。。。各种蛋疼的事情发送。

硬件调试问题,希望你指跳路啊....串口应该如何调试?


是不是用到你的板子就不会有这些问题了?唉..你的迷你感觉都大哦。。。飞控 伤不起!你快推出些面向这些的板子吧。
xyz1015231411
5楼-- · 2019-10-16 02:22
 精彩回答 2  元偷偷看……

一周热门 更多>