硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3126|回复: 3
收起左侧

[有问必答] 串口发送问题,和串口发送dht11数据问题

[复制链接]

32

主题

103

回帖

199

积分

高级会员

积分
199
发表于 2018-10-25 17:17:44 | 显示全部楼层 |阅读模式
串口循环发送的时候,或者发送一个字符串的时候,如果快速点击关闭串口,再打开,那么这个字符串就不会接着上一次的发送,也不会从头发送。
比如我循环发送  0123456789      关闭串口的时候已经发送到了0123   我再开启串口,这时候不是从456789开始的,而是从345  或者 456 或者0123等等别的位置继续发送,这是为什么呢?怎么才能写发送程序才能接着继续发送呢?我的程序比较简单,因为带的例程看不太懂,尴尬
  1. void USART1_Sendbyte(u8 ch)
  2. {
  3.        
  4.         USART_SendData(USART1, ch);
  5.         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);
  6. }
复制代码
  1. while(1)
  2.         {
  3.                 for(i=0;i<10;i++)
  4.                 {
  5.                         USART1_Sendbyte('A'+i);
  6.                 }       

  7.         }
复制代码
现象如下,我再ABCD的地方关闭助手,再打开,不是从E开始,重复了一遍CD
微信截图_20181025171047.png
2、读取dht11数据,通过串口发送,数据还好,就是每次数据之间,有很多 00,如图所示,延时1s,0会少一些,但是这种程序用延时感觉不太好,数据断了。谢谢各位
微信图片_20181025171342.jpg 微信图片_20181025171353.jpg

这是dht11的读取程序,也比较简单,就是总出0,  谢谢
  1. void DHT_Read(u8 *r)
  2. {
  3.         int i=0,j=0;
  4.         u8 dht[5]={0};

  5.         DHT_L();
  6.         delay_ms(20);

  7.         DHT_H();
  8.         delay_us(60);       
  9.        
  10.         if(DHT_READ()==0)       
  11.         {
  12.                 while(DHT_READ()==0);
  13.                 while(DHT_READ()==1);
  14.        
  15.                 for(j=0;j<5;j++)
  16.                 {
  17.                         for(i=0;i<8;i++)
  18.                         {
  19.                                 dht[j]<<=1;
  20.                                 dht[j]+=DHT_readbit();
  21.                         }
  22.                 }
  23.         }
  24.         for(i=0;i<5;i++)
  25.         {
  26.                 *r++=dht[i];
  27.         }
  28.         r[i]++;//用来放置断点
  29. }
复制代码




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2018-10-26 02:47:58 | 显示全部楼层
这个现象是正常的,你关闭的是上位机串口,你要关闭板子的串口就好了。
回复

使用道具 举报

32

主题

103

回帖

199

积分

高级会员

积分
199
 楼主| 发表于 2018-10-26 12:33:20 | 显示全部楼层
eric2013 发表于 2018-10-26 02:47
这个现象是正常的,你关闭的是上位机串口,你要关闭板子的串口就好了。

这样啊,板子上串口没有开关,我给板子断电可以吗?
我想的是如果发送大量数据的时候中间断了,后面接不上,整个一堆数据就全用不了了。
回复

使用道具 举报

3

主题

50

回帖

64

积分

初级会员

积分
64
发表于 2018-10-26 12:41:17 | 显示全部楼层
你最好弄个双向的,接收的收到一个,马上回一个。发的如果没有收到回的,就不要发了。
这样串口断的也没事。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 05:37 , Processed in 0.159544 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表