乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Stduino小白練習(xí)第二彈--串口使用

       Astilbe001 2019-12-01

      2019/11/30 星期六 作者:Astilbe
      問題:怎么利用Stduino實(shí)現(xiàn)stm32單片機(jī)與電腦間串口通訊?




      Stduino需要和其他設(shè)備相互通訊,最簡單的方式就是利用串口實(shí)現(xiàn)通訊。本篇介紹Stduino硬件串口通訊,以及相關(guān)函數(shù)的使用。

      首先要介紹一個(gè)概念——波特率。波特率表示每秒鐘傳送的碼元符號(hào)的個(gè)數(shù),簡而言之就是對(duì)一秒鐘傳遞多少信息的一個(gè)度量。如果是串口通信,一般包括起始位,數(shù)據(jù)位,校驗(yàn)位(可無)和停止位。以起始位為標(biāo)志,通信雙方進(jìn)行同步,然后發(fā)送方以一個(gè)固定的時(shí)間間隔進(jìn)行比特位的傳輸,接收方以一個(gè)固定的時(shí)間間隔進(jìn)行比特位的接收,如果雙方的波特率不同,就意味著發(fā)送方和接收方所采用的時(shí)間間隔不相等,就可能導(dǎo)致接收數(shù)據(jù)的錯(cuò)位。一般認(rèn)為通信雙方的波特率相差2.5%以內(nèi)可保證正常通信。


      因此初始化串口的第一步,就是設(shè)置串口波特率。在這里我們可以通過Serial.begin()函數(shù)實(shí)現(xiàn)。常見的波特率有9600與115200兩種,在這里我們?cè)O(shè)置為9600進(jìn)行測(cè)試。
      Stduino IDE自帶了許多與串口操作有關(guān)的函數(shù),分別是
      Serial.begin()//初始化串口;
      Serial.available()//判斷當(dāng)前串口是否有可用數(shù)據(jù),有則返回1,沒有則返回0;
      Serial.print()//利用串口向外傳送信息,在這里就是傳給電腦
      Serial.read()//當(dāng)Serial.available()返回1時(shí),通過此函數(shù)會(huì)讀取到接收到的相關(guān)數(shù)據(jù),否則返回?zé)o


      接下來我們進(jìn)行以下的測(cè)試:利用Stduino向外發(fā)送"Hello,world!"。
      分為以下幾步:
      初始化串口;
      向外傳送"Hello,world!"。
      這里設(shè)置為間隔一秒發(fā)送一次。


      代碼如下:

      void setup() {
          
        // put your setup code here, to run once:
      Serial.begin(9600);//初始化
      }

      void loop() {
        // put your main code here, to run repeatedly:
      Serial.println("Hello,World");
          delay(1000);
      }

      點(diǎn)開Stduino右側(cè)眼睛(串口助手),點(diǎn)擊檢測(cè)串口、打開串口。恭喜你接收到你的Stduino發(fā)給你的“Hello,world!”了。

      那么,我想給Stduino發(fā)消息呢?比如發(fā)一個(gè)1?接下來,我們發(fā)給Stduino一個(gè)1.如果收到就回復(fù)"Hello,world!",沒有收到或者收到的不是1就不回復(fù)。
      代碼如下:

      void setup() {
          
        // put your setup code here, to run once:
      Serial.begin(9600);
      }

      void loop() {
        // put your main code here, to run repeatedly:
      if(Serial.available()){//判斷是否初始化
      <div style="text-indent: 28px;">if(Serial.read()==49){//判斷是否接收到了1,49是1的ASCII碼值,測(cè)試時(shí)注意收到的是十進(jìn)制還是ascii碼。</div>Serial.print("Hello,World");
          delay(1000);
               }
          }
      }

      同樣,點(diǎn)開Stduino右側(cè)眼睛(串口助手),點(diǎn)擊檢測(cè)串口、打開串口。恭喜你的Stduino收到你的1并給你回復(fù)了“Hello,world!”。


      最后介紹一個(gè)函數(shù)Serial.println(),這是一個(gè)給輸出換行的函數(shù),用來減少可能出現(xiàn)的混淆,用到了再說。

      本文轉(zhuǎn)載自Stduino網(wǎng)http:///forum.php?mod=viewthread&tid=9&page=1#pid9

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多