您好,歡迎訪問上海意泓電子科技有限責(zé)任公司網(wǎng)站!
      4新聞資訊
      您的位置: 首頁 ->  新聞資訊 -> 單片機(jī)

      ?STM32中通過普通延時(shí)函數(shù)來精確延時(shí)

      文章出處:單片機(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
      2020
      11-10

      在STM32中處處會(huì)用到延時(shí)函數(shù),一般而言,對(duì)于普通的控制延時(shí),并不會(huì)要求特別精確,所以可以使用普通的延時(shí)函數(shù),例如


      void delay(u32 time)  

      {  

        while(time--);  

      }  

       但是在某些情況下,例如讀取傳感器數(shù)據(jù),就需要精確的延時(shí),對(duì)于這種,這時(shí)候可以考慮使用軟件定時(shí)器或者系統(tǒng)定時(shí)器進(jìn)行精確定時(shí)延時(shí)。在這篇博文中不在詳細(xì)對(duì)這兩種進(jìn)行描述。

      本文主要是針對(duì)某些情況下,使用系統(tǒng)滴答定時(shí)器或者軟件定時(shí)器對(duì)工程造成阻塞影響或者定時(shí)器用作其他用途,不夠使用的情況下的另一種解決方法。


      因此本文主要是解決通過普通延時(shí)函數(shù)實(shí)現(xiàn)精確的定時(shí)。

      博主測(cè)試的開發(fā)板芯片是STM32f103c8t6,外部晶振是8M,系統(tǒng)使用經(jīng)過倍頻至72M,編譯器選擇的Keil5,使用的是庫函數(shù)開發(fā)。通過普通延時(shí)函數(shù)來實(shí)現(xiàn)讀取溫濕度傳感器DHT11的數(shù)據(jù),由于使用的freeRTOS操作系統(tǒng),同時(shí)各個(gè)軟件定時(shí)器用作其他用途。。。理由不再贅述。


      剛開始,通過使用__NOP()函數(shù),因?yàn)槭褂昧?M晶振9倍頻,72MHz,所以一個(gè)nop約等于1/72us,所以使用72個(gè)nop函數(shù)為一個(gè)us,然后根據(jù)需要的定時(shí)時(shí)間進(jìn)行計(jì)算。


      void delay_us(u32 nTimer)  

      {  

          u32 i=0;  

          for(i=0;i

              __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

              __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

              __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

              __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

              __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

          }  

      }  


      void delay_ms(u32 nTimer)  

      {  

          u32 i=1000*nTimer;  

          delay_us(i);  

      }  


      之后通過測(cè)試讀取傳感器數(shù)據(jù),得到了數(shù)據(jù),證明該延時(shí)函數(shù)相對(duì)比較準(zhǔn)確,但是由于博主身邊并沒有邏輯分析儀或示波器,所以不能對(duì)其延時(shí)時(shí)間進(jìn)行精確測(cè)試。

      第二種延時(shí)方法是在電子發(fā)燒友論壇看到版主通過邏輯分析儀對(duì)另一種普通延時(shí)進(jìn)行的精確測(cè)試。同樣可以實(shí)現(xiàn)讀取數(shù)據(jù)。具體延時(shí)函數(shù)如下所示:


      void delay_us(u32 time)  

      {  

        u32 i=8*time;  

        while(i--);  

      }  

      void delay_ms(u32 time)  

      {  

        u32 i=8000*time;  

        while(i--);  

      }  

      上海意泓電子科技有限責(zé)任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

      CopyRight 2020-2025 www.topsschool.com All rights reserved   滬ICP備2021005866號(hào)

      亚洲精品无码va人在线观看,少妇 逼小 水多,国产区免费av,国产精品无码观看

          中文字幕视频在线观看| 亚洲国产99精品国自产| 无码av电影在线观看不卡| 精品国产污污污免费网站入口| 久久综合给合久久狠狠狠974| 欧美、另类亚洲日本一区二区| 国产一级毛片特级毛国产| 国产精品久久久首页| 欧美精品国产免费无| 丰满美女冒白浆久久久久久久| 亚洲综合偷拍欧美一区| 人妻av中文无码专区| 亚洲V国产V日韩V欧美V| 国产免费高清| 亚洲另类日本色图五月| 欧美 日韩 人妻 高清 中文| a级国产乱理论片在线观看| 日韩精品亚洲精品第一页| 中文字幕无码有码三级| 91久久国产综合精品女同| 成人做受黄大片| 无码久久久久久中文字幕视频| 91久久国产综合久久91精品网站| yw尤物av无码国产最新观看| 日本韩国亚洲综合日韩欧美国产| 亚洲av片劲爆在线观看| 国产综合色产在线视频欧美| 一本久道中文无码字幕av| 蜜桃麻豆WWW久久国产精品|