久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2322|回復: 3
收起左側

ESP8266如何從15單片機串口中讀取需要的數據?

[復制鏈接]
ID:886263 發表于 2022-4-12 17:07 | 顯示全部樓層 |閱讀模式
我用2套15F2K60S單片機+8266,一套做發射端,一套做接收端。
發射端已經弄好了一套程序,超聲波和聲音傳感器測量數據,數據格式如下:T=60.3cm,S=0E。發送是正常的。現在問題就是接收端解釋不了我需要的數據。早期測試的時候,串口2的數據是可以接收到的,但獲取不了需要的數據。

接收端的8266是用串口2的,代碼如下:

  1. //串口2中斷
  2. void Uart2() interrupt 8 using 1
  3. {

  4. IE2 = 0x00;                  //關閉串口2中斷
  5.                         if (S2CON & S2RI)
  6.                         {
  7.                         S2CON &= ~S2RI;         
  8.                         res = S2BUF;
  9.                         test[RX_num2]=res;
  10.                         RX_num2++;

  11.                                 if(res=='T'||u>0)
  12.                                 {
  13.                                 
  14.                                 RX_buffer2[u]=res;
  15.                                 u++;
  16.                                 //i++;
  17.                                         if(res=='E')
  18.                                         {
  19.                                                 
  20.                                                 //添加對收到信息的處理代碼
  21.                                         memset(RX_buffer2, 0, 30);//清緩存數據
  22.                                         u=0;
  23.                                         //i=0;                                   //接收計數變量清0
  24.                                         }                        
  25.                                 }
  26.                         if(RX_num2>tbuf) RX_num2 = 0;
  27.                         }
  28.                         if (S2CON & S2TI)
  29.                         {
  30.                         S2CON &= ~S2TI;            
  31.                         }
  32.                         IE2 = 0x01;                //開啟串口2中斷

  33.                         
復制代碼

求各位大神幫忙看看。要怎么才能獲取到我需要的關鍵信息。
回復

使用道具 舉報

ID:301191 發表于 2022-4-12 22:34 | 顯示全部樓層
頂一下
回復

使用道具 舉報

ID:123289 發表于 2022-4-14 09:26 | 顯示全部樓層
中斷后關閉中斷是個錯誤的觀念,不是說不可以。
1、至少浪費兩條指令的時間,開它和關它。
2、如果新的中斷來了,則可能會留失數據,如你認為后面又打開了,則不關不是一樣嗎。
不要在中斷中分析數據(IF RES 如何如何)!!中斷只做數據的接收與存儲就行了,做個標記立即結束退出,這樣中斷服務時間才最短,不會影響到下個數據的接收。數據處理應在主程序中去做!!
記住:所有中斷服務程序,要盡可能地節省時間,盡快退出。能在主程序中處理的,不要在中斷中處理。
理由:中斷服務程序期間,其它平級低級中斷將無法響應!!
例如:時間中斷執行時間長,中斷期間,低級的串口中斷來了,因無法即時響應,結果下一個串行字節又來了,則數據就丟失了一個。這種事情,在你的程序中是否會發生呢?全面查一下。
回復

使用道具 舉報

ID:886263 發表于 2022-4-16 15:53 | 顯示全部樓層
yzwzfyz 發表于 2022-4-14 09:26
中斷后關閉中斷是個錯誤的觀念,不是說不可以。
1、至少浪費兩條指令的時間,開它和關它。
2、如果新的中 ...

你好,問題解決了。加了這個res2 = S2BUF; 就可以正常識別了。
  1. //串口2中斷
  2. void Uart2() interrupt 8 using 1
  3. {

  4. IE2 = 0x00;                  //關閉串口2中斷
  5.                         if (S2CON & S2RI)
  6.                         {
  7.                         S2CON &= ~S2RI;         
  8.                         res2 = S2BUF;
  9.                         RX_buffer2[RX_num2]=res2;
  10.                         RX_num2++;
  11.                         if(res2=='\n') RX_num2 = 0;flag=1;
  12.                         }
  13.                         if (S2CON & S2TI)
  14.                         {
  15.                         S2CON &= ~S2TI;            
  16.                         }
  17.                         IE2 = 0x01;                //開啟串口2中斷

  18.                        

  19. }
復制代碼



回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区在线视频 | 精品成人在线视频 | 日韩免费福利视频 | 欧美日韩在线综合 | 欧美jizzhd精品欧美巨大免费 | 国产一区亚洲二区三区 | 中文字幕一区二区三区在线观看 | 不卡一区二区三区四区 | 欧美在线综合 | 天堂成人国产精品一区 | 九九免费视频 | 欧美久久一区 | 日韩免费网站 | 亚洲国产视频一区二区 | 久久午夜影院 | 日韩一区三区 | 最新中文字幕久久 | 欧美久 | 国产视频第一页 | 91在线观| 毛片综合 | 精产嫩模国品一二三区 | 91在线一区二区三区 | 天天干天天爽 | 国产一二区免费视频 | 99亚洲精品| 91人人看| 欧美日韩中文字幕在线 | 狠狠综合久久av一区二区老牛 | 国产激情视频在线 | 久草视频在线播放 | 欧美成年视频 | 亚洲一区视频在线 | 九九伦理片| 精品国产成人 | 97国产超碰 | 中文日韩字幕 | 在线播放一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 国产精品不卡一区 | 91精品久久久久久久久 |