浅析ESP8266定时器的计算周期与内存分布

描述

我上篇文章说了,我要写写ESP8266的定时器。我们这里要加一个微秒:百万分之一秒,10(-6)次方。就使用到计算周期。

扯点关于时间的碎碎念。

老子说了,如果大道为零天道就是无穷小,人道就是无穷大:天道×人道=一,也就是“有” 所以才有的:“无中生有”。庄子强调的真的是无限分割么,你也太小看自己的老祖先了 老子的无从来也不是无,本来就是在强调无穷小的概念 而且早就有了无穷小的定义 天之道,损有余而补不足,天道指的就是无穷小 实质指的就是小到极限 无论是什么,小到极限仍然不是无,至少都有对大道(或者说0)的敬畏的存在。人之道,损不足以奉有余,看起来像是在强调无限,其实正好相反,人道强调的正是有界 或者说“度”。

首先ESP8266芯片内部有两个区:

IROM:internal rom 内部ROM,指的是集成到SoC内部的ROM

IRAM:internal ram 内部RAM,指的是集成到SoC内部的RAM

ESP8266

dram是动态内存,需要周期性的充电

ESP8266

轮询就是CPU挨个问这些外设,你需要我服务吗?然后没人用的话,一会儿再来问一圈,但是这个处理的速度是很快的,所以这个实时性倒是还行。

对于需要轮询的应用这里建议使用定时器来计算,另外,定时器不要频繁的调用。微秒定时器如果是不精确的话,需要使用硬件的定时器,最重要的是ISR一定要短。

反正就是精确延时的话,就要使用硬件的定时器。

另外:毫秒是一种较为微小的时间单位,符号为ms,1秒 = 10分秒;1分秒 = 10厘秒;1厘秒 = 10 毫秒 ;1 毫秒 = 1000微秒;1微秒 = 1000纳秒;1纳秒 = 1000皮秒。典型照相机的最短曝光时间为一毫秒。

ESP8266

定时器的使能,但是ESP8266没有更多的技术资料,所以这个定时器到底是什么样的,其实这里我也不是很清楚。

ESP8266

这里是定时器回调函数的定义

ESP8266

这个是微秒级别的延时,最高的精度为500us

ESP8266

硬件的ISR定时器的初始化的写法,最后的参数是要不要自动的装填。

ESP8266

硬件中断定时器的写法

ESP8266

定时器的回调函数一定不能写到Flash内部。

ESP8266
ESP8266

硬件的定时器这样使用

ESP8266

这里我找到一个ESP32内存分布情况

ESP32 内部存储器(SRAM)的布局。SRAM 分为 3 个存储块 SRAM0、SRAM1 和SRAM2(以及 RTC 快速和慢速存储器 2 个小块).


SRAM 以两种方式使用:一种用于指令存储,称为 IRAM(用于执行代码,text 段),另一种用于数据存储,称为 DRAM(用作 BSS 段,Data 段和堆)。SRAM0 和 SRAM1 可以用作连续的 IRAM,而 SRAM1 和 SRAM2 可以用作连续的 DRAM 地址空间。

一般Non-SDK,是基于事件驱动的编程模型:

事件就是两个物体之间产生了交互行为,就可以成为一个事件。而事件驱动就是两个之间产生了交互行为,驱使两个物体的一方,做出了相应的行为或动作。

本来还能写,但是马上就12点了,下篇文章继续了。


审核编辑:刘清

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分