wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

最高效率使用單片機,放棄程序中的延時函數

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年10月08日   【字體:

  我是PC機底層編程轉過來的,以前從來沒接觸過單片機,五個月前學習AVR,在這里學到很多東西。但也意識到電子工程師們的硬件編程思想與PC機底層編程思想上的很多不同,引發了一些思考。我說一說,供大家參考,只為學習,無意爭論。

  我第一次看到教程里Delay()函數的代碼時我嚇了一跳,竟然讓單片機空轉以實現和外界同步,這怎么可能?
試想,如果PC機CPU空轉一秒,那么音樂會斷一秒、畫面會停頓一秒、下載文件會斷一秒,這怎么可行?

  我看到很多單片機程序,它們的單片機99.9%的工作時間都在打空轉,99.9%大家可能感到有些危言聳聽,那就讓我們算一算:

  已內部8M頻的AVR單片機來說,單指令周期僅為1/8 = 0.125us,那一毫秒可以執行多少個單周期指令? 1%0.125*1000 = 8000個

  而我看到論壇里下到的絕大多數程序,兩個延時函數之間代碼的執行時間要遠遠小于8000個指令周期。
說實話,很多16K以上的程序,把所有延時函數去掉,總體能執行幾毫秒就不錯了。

  換句話說,我說單片機的利用率小于0.01%還是口下留情了。

  要說怎么解決問題,就要先找到問題,我問問大家,程序中,我們為什么延時?

  原因很多,可能是外設速度太慢,也可能是為了躲過人眼視覺停留時間,等等。
總之就是與外界不同步,而我們想要同步。

  所以說這些延時應該是很有道理的,我不否定這一點,但問題的關鍵這些延時空轉,我們為什么不能把這些時間回收起來做一些別的事呢?
試想,如果把這99.9%的時間回收,那可以一筆相當巨大的資源。

  有很多人有些特殊方法回收過這些空轉時間,比如說在延時函數中做點事。

  但這些往往都不通用,下面我說一些我的兩種方法:


1、前后臺模式下延時時間回收的方法:

前后臺模式就是大家最常用的主程序大循環 + 中斷的模式。

  首先解決外設太慢問題,像串口、鍵盤、LCD、SD卡等IO,這些收發可以建立外部緩沖區。比如串口收發在中斷中完成保存到緩沖區,而主程序操作緩沖區而不直接操縱串口,這已經看到很多人這樣用了。但像矩陣鍵盤的緩沖區,我很少看到有人這么用,在中斷中接收按鍵信息保存到緩沖區。
還有像LCD,我們一個個往顯存中寫數據是很浪費的,也應該建立緩沖,統一處理。

  建立緩沖區這類方式中間有一些技術難點,比如像串口接收,無法判斷對發是否全部發完,怎么辦?可以設立定時,如果一個字節接收之后1ms之內沒收到下一個,則認為接收完畢。這只是一個思想,具體應用大家掌握。

  可能有人會說,除了外設太慢,還有像視覺停留的問題怎么解決,總不能讓流水燈快到人眼都看不清吧。
這就我下面要說的問題,這些延時的時間怎么回收?就是全部放到定時中斷中!

  可能又有些人會說,書里、教程都說了,中斷處理東西的時間要盡量短,你這樣整個中斷有太多判斷、很長,時間很長,這不行。

這是一種教條的思想,把書讀死了?梢栽谥袛嘀羞@樣處理,比如:

void (*Task)(void);
ISR
{
      (*Task)(void);
}

  中斷里用的內容通過函數指針來調用,這樣可以在主程序根據需要時任意改變要執行的任務,還可以改任務的周期。所用的判斷都是在主程序需中執行,然后改變指針的指向,來確定中斷中下一步的任務。

  這樣,在前后臺系統中主程序將任務分配完,還有很多余力處理很多事。

  比如有很多個鍵盤、LED點陣、數碼管等,它們都需要實時響應,很容造成編程困難、響應遲鈍,其實只要把延時的時間回收,處理這些就非常從容了。

  可能還有人會說,有些項目用不了這么苛刻的時間,你回收的時間用不了,要那么多干嘛?

  其實這時,你就可以用死循環掃描事件,可以實時響應。你的系統跟原來空循環延時比,實時性要高了不知多少倍。


2、變異的協作式內核

  先說說嵌入式操作系統的內核,簡單的說,它就是個任務調度器,讓多個任務在同一個CPU上同時執行,所謂同時也是相對的,無非就第一個任務執行幾毫秒、第二個任務在執行幾毫秒。。。外表看起來就是同時執行。

  至于可剝奪式內核和協作式內核的區別,大家可以百度一下。

  說道能在單片機上用的嵌入式操作系統,大家會說出一些如uCosII、FreeOS等操作系統。
還有很多人對這些操作系統十分抗拒、十分反對,他們的理由是什么?

1、這些操作系統占用大量RAM、ROM
2、這些實時操作系統所謂的實時是相對非實時操作系統的,跟裸機比實際上是慢了

  這些理由不是沒道理,因為這些商用操作系統都是可剝奪式內核,它們的原則是保證最高優先級任務在可確定的時間內響應。
它們的有優點是任務切換時間是確定的,不會隨任務的多少而改變。
有了這些確定性,讓它們在商用產品大放光彩。因為其時間穩定性。

  但它們的缺點也很明顯,中斷級節拍浪費很多時間。任務間同時調用時引發同步問題而引入許多如信號量、郵箱等機制浪費大量RAM、ROM。

  綜上,可剝奪式內核穩定可定量,在越高級的單片機上越有優勢,在8位機上可用,但需要大量裁剪,并不一定合適。

而協作式內核的核心思想是什么?它不像剝奪式內核保證最高級任務速度最快,而是保證所有任務的平均速度最快!

 正如我前面的說法,我連續兩個延時函數之間的代碼很難超過1ms,甚至很難超過100us,我們可以將其忽略。這樣10個任務,第一個執行完主動放棄單片機控制權,交給第二個任務,第二個任務執行完主動放棄控制權,交給第三個任務。10個任務之間無間隙,每一個任務需要延時時,就主動放棄控制權。

 基于這種思想,我們的就達到了回收空轉延時的目的,而且應為每個任務是執行完后主動放棄,所以不存在剝奪式內核的同步問題,基本不需要郵箱、信號量等機制,對RAM、ROM的要求就非常低了。

 這樣來看,協作式內核非常適合8位機。但可能有太多嵌入式系統的書中對剝奪式內核不分場合的認可,造成很多人誤解。而且uCos等系統的權威,也讓很多RTOS作者爭相效仿,沒用對8位機的場合做合理分析。

 商用系統中沒有協作式內核,而民用的,還少有優秀的協作式內核,都是基于傳統節拍。

 傳統協作式內核需要定時中斷為時鐘基準,也會間歇性打斷任務,造成不必要的損失,這并不是我們想要的。

 我們其實可以僅僅是讓定時器以大分頻系數開著, 而不給其產生中斷的機會。當任務將要放棄使用權時,讀取定時器,作為時鐘基準,然后清零。

 做法一句兩句說不清,而效果是什么?可以做到任務是以不受干擾,與裸機相同的工作狀態,這是傳統協作式內核做不到的,而僅當它需要延時了,才放棄使用權,將延時的時間給其它任務。這正符合我全文的目的 -- 回收空轉延時時間

 這樣的內核體積會非常小,運行方式與裸機無異,僅僅是把空轉延時時間干些其它事。對使用者還沒什么要求,不想以往系統那么復雜。

 可惜市面上并沒有基于這種方式的內核,我已經寫了一個,非常精簡,運行穩定。但作為一個想應用實際的內核,還需要檢驗。我最后檢查一下后,過幾天拿出來大家一起分享。

 PS:好了,我上面兩種方式,均為原創。希望能對大家有幫助~ 第二種中介紹的變異協作式內核思想很簡單,有興趣可以自己寫一個,我過幾天會把我的發上來。

關閉窗口

相關文章

污污软件在线观看| 成人教育av在线| 欧美人体视频xxxxx| 蝌蚪91视频| 中文字幕在线观看第二页| 中文字幕乱妇无码av在线| 茄子视频成人在线观看| 欧美—级a级欧美特级ar全黄| 欧美日本一区二区| 中文文精品字幕一区二区| 欧美专区18| 神马午夜久久| 最近高清中文在线字幕在线观看1| 免费国产视频| 豆国产97在线|亚洲| 中文字幕在线观看视频一区| 成人黄色a级片| 欧美日韩精品区别| 激情六月天婷婷| 韩日午夜在线资源一区二区| 久久99精品久久久久久噜噜| 日韩免费看网站| 亚洲一区在线免费观看| 粉嫩蜜臀av国产精品网站| 亚洲青色在线| h视频免费观看| 亚洲精品一级片| www..com国产| 久久精品—区二区三区舞蹈| 欧美性猛交xxx乱久交| 亚洲蜜桃av| 国产精品久久久久久久久久久久午夜片| 蜜臀久久99精品久久久久久宅男 | 亚洲视频中文字幕在线观看| 丝袜美腿小色网| 男生裸体视频网站| 57pao国产成永久免费视频| 激情五月六月婷婷| 欧美系列一区| 国产精品一区二区三区在线| 国产精品aaaa| 国产最新精品视频| 久久色在线播放| 伊人伊人伊人久久| 亚洲精品久久久久久久久久久久久 | 欧美日韩123| 国产一区 二区| 日本高清不卡一区二区三区视频| av在线网址观看| 青青草视频在线免费观看| 涩涩视频免费网站| 五月婷婷亚洲| 国产男女爽爽爽| 香蕉视频网页版| 亚洲第一成人在线视频| 91麻豆精品在线| 久久香蕉精品视频| 亚洲色图综合区| 免费视频91蜜桃| 魔女鞋交玉足榨精调教| 国产精品91av| 色欲无码人妻久久精品| 亚洲黄色av片| 久热在线视频观看| www.涩涩涩| 天堂av在线网站| 在线免费观看av的网站| 国产理论在线播放| 亚洲天堂网一区| 日韩欧美国产片| 久久6免费视频| www.色就是色.com| 欧美国产日韩在线视频| 原创真实夫妻啪啪av| 性色av浪潮av| 久久人人妻人人人人妻性色av| www.四虎精品| 国产精品久久不卡| 国产成人高潮免费观看精品| 国产精品极品在线| 亚洲一区二区三区sesese| 99国产在线| 久久国产精品一区二区三区四区 | 国产精品一区二区日韩| 中文字幕高清在线播放| 美女18一级毛片一品久道久久综合| 男人久久天堂| avav成人| 丁香五月缴情综合网| 偷窥自拍亚洲色图精选| 日韩精品dvd| 韩日成人在线| 免费在线观看视频一区| 韩日欧美一区二区三区| 不卡的av电影| 亚洲另类一区二区| 在线观看欧美黄色| 日韩精品中文字幕一区二区三区| 亚洲激情久久久| 久久久精品日本| 欧美一级视频免费在线观看| 91人人爽人人爽人人精88v| 精品国产免费一区二区三区 | 亚洲自拍偷拍网| 午夜亚洲伦理| 成人蜜臀av电影| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲成av人片一区二区| 欧美一级片在线看| 色系列之999| 国产精品久久久久久久久久三级| 国产视频一区二区三区四区| 男人的天堂成人| 第四色婷婷基地| 免费观看av网站| 国产成人免费看| 天堂v在线观看| a在线观看网站| av大片在线观看| 久久久久伊人| 天天操夜夜操国产精品| 狠狠色狠狠色综合日日91app| 中文字幕欧美三区| 欧美猛男男办公室激情| 色偷偷亚洲男人天堂| 成人免费视频在线观看超级碰| 日本不卡一区| 在线观看国产一级片| 免费成人深夜蜜桃视频| 中文字幕资源网| 91九色论坛| 国产福利在线观看| jizz欧美| 欧美视频在线观看| 波多野洁衣一区| 色婷婷精品久久二区二区蜜臀av| 亚洲一区999| 国产欧美日韩最新| 亚洲成年人影院在线| 久久久人成影片一区二区三区观看| 成人av蜜桃| 欧美精品一区二区三区免费播放| 又色又爽的视频| 亚洲国产精品久久久久久久 | 久久久亚洲福利精品午夜| 精品在线一区| 久久久精品高清| 毛片毛片女人毛片毛片| 精品国产一区二区三区久久久狼牙| 中文字幕视频在线免费| 日本亚洲欧洲无免费码在线| 国产一区亚洲| 国产精品久久综合| 日韩毛片在线看| 亚洲伊人久久大香线蕉av| 日韩精品一区二区三区久久| 777777国产7777777| 五十路亲子中出中文字幕| 中文字幕大看焦在线看| 四虎精品一区二区免费| 亚洲欧美成人| 一区二区三区在线免费| 最近中文字幕mv在线一区二区三区四区 | 亚洲三级小视频| 亚洲男人天天操| 成人动漫视频在线观看完整版 | 精品午夜一区二区| 色婷婷狠狠18禁久久| 瑟瑟视频在线免费观看| jizzjizzjizz美国| 天天免费亚洲黑人免费| 亚洲深爱激情| 欧美日韩午夜剧场| 国语自产精品视频在线看抢先版图片| 亚洲精品日韩在线观看| av在线网站观看| 亚州av在线播放| 久久久久久久影视| 亚洲色图丝袜| 国产亚洲va综合人人澡精品| 亚洲国产精品成人av| 成人高清在线观看| 中文字幕在线视频播放| 天堂在线观看视频| 亚洲搞黄视频| 欧洲亚洲在线| 婷婷视频一区二区三区| 国产成人综合在线| 亚洲国产三级网| 久久久久网址| 亚洲av毛片基地| 国产精品一区二三区| 色网在线免费观看| 日韩电影在线观看网站| 在线播放国产精品二区一二区四区 | 亚洲在线免费播放| 国产91精品久久久久久| 欧美性猛交久久久乱大交小说| 男人天堂视频网| 中文字幕在线播放第一页| 国产亚洲一区二区三区不卡| 国产精品区一区二区三| 九九精品在线播放| 999精品网站| 国产麻豆免费观看| 91精品大全| 亚洲精品影视| 欧美日韩电影在线| 国内精品二区| 免费国产羞羞网站美图| 奇米四色7777| 人人精品亚洲| 亚洲一区二区视频在线观看| 国产精品久久久久久久app| 伊人影院在线观看视频| 欧美成人高清手机在线视频 | 无码日本精品xxxxxxxxx| 国产 日韩 欧美 在线| 传媒av在线| 午夜片欧美伦| 91国偷自产一区二区三区观看 | 日日狠狠久久偷偷四色综合免费 | 中国女人一级毛片| 成人乱码手机视频| 国产女人aaa级久久久级| 久久人人爽人人爽人人片av高请 | 成人av资源在线观看| 色噜噜狠狠狠综合曰曰曰 | 嫩草影院永久一二三入口| 在线观看欧美日韩电影| 成人h版在线观看| 久久久久久国产| 国产大学生av| 夜夜骑夜夜操| 欧美交a欧美精品喷水| 亚洲国产日韩一级| 国产精品二区在线| 久久精品久久国产| 噜噜噜在线观看播放视频| 亚洲综合另类| 在线免费观看羞羞视频一区二区| 日韩精品xxxx| 亚洲国产精品久久久久婷婷软件| 不卡一区视频| 亚洲成人激情av| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 日韩欧美一区二区三区四区| 久久免费激情视频| 黄视频在线观看网站| 国产一区二区福利| 欧美精品久久久久久久免费观看 | 成人手机在线电影| 888久久久| 精品日韩av一区二区| 无码专区aaaaaa免费视频| 免费看黄色一级视频| 国产精品亚洲一区二区三区在线观看| 国产日韩欧美精品综合| 91精品久久久久久久久久久| 黄色一级片在线| av在线第一页| 成人国产精品免费观看视频| 国产a∨精品一区二区三区不卡| 中国1级黄色片| 黄色在线播放| 国产精品一区二区久激情瑜伽| 国内伊人久久久久久网站视频| 成人免费无遮挡无码黄漫视频| 美臀av在线| 精品无人码麻豆乱码1区2区| 久久久久久久久久久人体| 国产亚洲精品熟女国产成人| 色av男人的天堂免费在线| 免播放器亚洲一区| 午夜美女久久久久爽久久| 欧美一级特黄高清视频| 在线观看av黄网站永久| 91啪亚洲精品| 96久久精品| 91超薄丝袜肉丝一区二区| julia一区二区三区中文字幕| 亚洲高清不卡在线| 777久久精品一区二区三区无码| 亚洲精品综合一区二区三区| 第一会所sis001亚洲| 亚洲欧美一区二区三区四区| 国产高清成人久久| 在线观看av网站永久| 国产精品一区二区久激情瑜伽| 国产日韩欧美视频| 一区精品在线观看| 99视频这里有精品| 欧美精品自拍偷拍| 99re精彩视频| 在线看片线路1| 波多野结衣中文字幕一区| 韩国一区二区三区美女美女秀 | 成年人免费看毛片| www.国产精品| 欧美影院精品一区| 三级在线免费看| 国产呻吟对白刺激无套视频在线| 国产高清亚洲一区| 国产91精品一区二区绿帽| 亚洲欧美另类综合| 日本在线电影一区二区三区| 伊人伊成久久人综合网小说 | 一区二区日韩av| av片在线免费| 天天操夜夜操免费视频| 久久激情五月激情| 亚洲综合在线做性| 网站黄在线观看| 一本一道久久综合狠狠老| 欧美久久精品一级黑人c片| 日韩伦人妻无码| 麻豆精品国产| 亚洲色图在线观看| 国产美女高潮视频| 成人自拍视频网| 欧美精品一区二区久久婷婷| 好吊视频在线观看| 老色鬼在线视频| 欧美浪妇xxxx高跟鞋交| 黄色在线免费播放| 欧美野外wwwxxx| 欧美日韩一区在线| 亚洲一区二区三区综合| 欧美aaaaaaa| 欧美在线免费观看亚洲| 国产成人av免费观看| 国产原创在线观看| 日本高清无吗v一区| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 99久久久国产精品无码免费| 日韩不卡一区| 欧美亚洲另类在线| 午夜精品久久久久久久99热黄桃| 国产精品精品| 国产精品久久久久久久久久久久| 男人天堂综合网| 亚洲永久免费| 狠狠色噜噜狠狠色综合久| 又黄又免费的视频| 成人精品gif动图一区| www.一区二区.com| 色视频www在线播放国产| 亚洲桃色在线一区| 超碰人人草人人| 视频在线观看入口黄最新永久免费国产| 欧美午夜影院在线视频| www.555国产精品免费| 中文日产幕无线码一区二区| 亚洲精品国产精品久久清纯直播| 久草视频精品在线| 欧亚精品一区| 日韩免费在线播放| 欧美乱大交xxxxx另类| 欧美极品影院| 日韩www在线| 亚洲 欧美 日韩 在线| 久久最新网址| 国产精品女人网站| 国产伦精品一区二区三区高清版禁| 国产成人午夜视频| 男人添女人荫蒂免费视频| 国内在线精品| 777久久久精品| 四虎永久在线精品| 亚洲不卡av不卡一区二区| 999热视频| 天干夜天天夜天干天ww| 亚洲精品老司机| jizz日本免费| 粉嫩av一区二区| 国产精品成人观看视频国产奇米| 欧美肥婆xxxx欧美另类| 97se狠狠狠综合亚洲狠狠| 色七七在线观看| 成人欧美一区二区三区的电影| 国产亚洲欧美一区| 亚洲成人一级片| 国产乱码精品一区二区三| 男人天堂1024| 精精国产xxxx视频在线播放| 亚洲片国产一区一级在线观看| 91资源在线视频| 久草精品在线观看| 欧美 日本 亚洲| 中文不卡1区2区3区| 精品激情国产视频| 欧区一欧区二欧区三| 成人禁用看黄a在线| 亚洲一区二区福利视频| 婷婷激情成人| 国产精品视频中文字幕91| a级女人18毛片| 色av成人天堂桃色av| 国产一级免费观看| 亚洲少妇一区|