我上篇文章說了,我要寫寫ESP8266的定時(shí)器。我們這里要加一個(gè)微秒:百萬分之一秒,10(-6)次方。就使用到計(jì)算周期。
扯點(diǎn)關(guān)于時(shí)間的碎碎念。
老子說了,如果大道為零天道就是無窮小,人道就是無窮大:天道×人道=一,也就是“有” 所以才有的:“無中生有”。莊子強(qiáng)調(diào)的真的是無限分割么,你也太小看自己的老祖先了 老子的無從來也不是無,本來就是在強(qiáng)調(diào)無窮小的概念 而且早就有了無窮小的定義 天之道,損有余而補(bǔ)不足,天道指的就是無窮小 實(shí)質(zhì)指的就是小到極限 無論是什么,小到極限仍然不是無,至少都有對(duì)大道(或者說0)的敬畏的存在。人之道,損不足以奉有余,看起來像是在強(qiáng)調(diào)無限,其實(shí)正好相反,人道強(qiáng)調(diào)的正是有界 或者說“度”。
首先ESP8266芯片內(nèi)部有兩個(gè)區(qū):
IROM:internal rom 內(nèi)部ROM,指的是集成到SoC內(nèi)部的ROM
IRAM:internal ram 內(nèi)部RAM,指的是集成到SoC內(nèi)部的RAM
dram是動(dòng)態(tài)內(nèi)存,需要周期性的充電
輪詢就是CPU挨個(gè)問這些外設(shè),你需要我服務(wù)嗎?然后沒人用的話,一會(huì)兒再來問一圈,但是這個(gè)處理的速度是很快的,所以這個(gè)實(shí)時(shí)性倒是還行。
對(duì)于需要輪詢的應(yīng)用這里建議使用定時(shí)器來計(jì)算,另外,定時(shí)器不要頻繁的調(diào)用。微秒定時(shí)器如果是不精確的話,需要使用硬件的定時(shí)器,最重要的是ISR一定要短。
反正就是精確延時(shí)的話,就要使用硬件的定時(shí)器。
另外:毫秒是一種較為微小的時(shí)間單位,符號(hào)為ms,1秒 = 10分秒;1分秒 = 10厘秒;1厘秒 = 10 毫秒 ;1 毫秒 = 1000微秒;1微秒 = 1000納秒;1納秒 = 1000皮秒。典型照相機(jī)的最短曝光時(shí)間為一毫秒。
定時(shí)器的使能,但是ESP8266沒有更多的技術(shù)資料,所以這個(gè)定時(shí)器到底是什么樣的,其實(shí)這里我也不是很清楚。
這里是定時(shí)器回調(diào)函數(shù)的定義
這個(gè)是微秒級(jí)別的延時(shí),最高的精度為500us
硬件的ISR定時(shí)器的初始化的寫法,最后的參數(shù)是要不要自動(dòng)的裝填。
硬件中斷定時(shí)器的寫法
定時(shí)器的回調(diào)函數(shù)一定不能寫到Flash內(nèi)部。
硬件的定時(shí)器這樣使用
這里我找到一個(gè)ESP32內(nèi)存分布情況
ESP32 內(nèi)部存儲(chǔ)器(SRAM)的布局。SRAM 分為 3 個(gè)存儲(chǔ)塊 SRAM0、SRAM1 和SRAM2(以及 RTC 快速和慢速存儲(chǔ)器 2 個(gè)小塊).
SRAM 以兩種方式使用:一種用于指令存儲(chǔ),稱為 IRAM(用于執(zhí)行代碼,text 段),另一種用于數(shù)據(jù)存儲(chǔ),稱為 DRAM(用作 BSS 段,Data 段和堆)。SRAM0 和 SRAM1 可以用作連續(xù)的 IRAM,而 SRAM1 和 SRAM2 可以用作連續(xù)的 DRAM 地址空間。
一般Non-SDK,是基于事件驅(qū)動(dòng)的編程模型:
事件就是兩個(gè)物體之間產(chǎn)生了交互行為,就可以成為一個(gè)事件。而事件驅(qū)動(dòng)就是兩個(gè)之間產(chǎn)生了交互行為,驅(qū)使兩個(gè)物體的一方,做出了相應(yīng)的行為或動(dòng)作。
本來還能寫,但是馬上就12點(diǎn)了,下篇文章繼續(xù)了。
審核編輯:劉清
-
sram
+關(guān)注
關(guān)注
6文章
762瀏覽量
114600 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3234瀏覽量
114363 -
ESP8266
+關(guān)注
關(guān)注
50文章
962瀏覽量
44766
原文標(biāo)題:ESP8266定時(shí)器.上
文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論