一、概况

1.存储

ESP8266 带有 160 KB 的 RAM,其中 64 KB 为 iRAM,96 KB 为 dRAM。iRAM 进一步

分成两块:32 KB iRAM 块运行标有 IRAM_ATTR 的代码,另一个 32 KB 块用作

cache,运行标有 ICACHE_FLASH_ATTR 的代码。

RAM 和 flash 访问必须是 4 字对齐的,请勿直接进行指针转换。请使用 os_memcpy 或

其他 API 进行内存操作。

二、代码结构

1.void user_init(void)

上层程序的⼊入⼝口函数,可在增加硬件初始化、⽹网络参数设置、定时器器初始化等功能

2.void ICACHE_FLASH_ATTR user_pre_init(void)

ESP8266_NONOS_SDK_v3.0.0 及之后版本,用户在此函数内注册用户自己的分区表

3.函数类型

1)应⽤用函数

应⽤用函数在定义时建议添加 ICACHE_FLASH_ATTR 宏,相应程序将存放在 flash 中,

被调⽤用时才加载到 cache 运⾏行,添加 IRAM_ATTR 宏的函数,则会在上电启动

时就加载到 iRAM 中。

(添加了 ICACHE_FLASH_ATTR 的代码通常⽐比使用 IRAM_ATTR 标记的代码执行得慢。然

而,像⼤大多数嵌入式平台一样,ESP8266 的 iRAM 空间有限,因此建议一般代码添加

ICACHE_FLASH_ATTR,仅对执行效率要求高的代码添加 IRAM_ATTR 宏。)

2)回调函数

编写回调函数,需要使用相应的 register_cb API 注册回调函数

3)中断服务程序 (ISR)

一种特殊类型的回调函数。发⽣生硬件中断时会调⽤。当使能中断时,必须注册相应的中断处理理函数。

ISR 必须添加 IRAM_ATTR

4)用户任务

Non-OS SDK最多只支持3个用户任务,优先级2>1>0,用户任务一般用于函数不能直接被调⽤用的情况下

定时器和中断

• 对于需要进⾏行行轮询的应⽤用,建议使用系统定时器器定期检查事件。

- 如果使⽤用循环(while 或 for),不仅效率低下,而且阻塞 CPU,不建议使用。

- 如果需要在定时器器回调中执行 os_delay_us 或 while 或 for,请勿占用 CPU超过 15 ms。

• 请勿频繁调⽤用定时器器,建议频率不高于每 5 ms ⼀次(微秒计时器器则为 100 μs)

• 微秒定时器器不不是很精确

• 请勿⻓长时间关闭中断

ESP8266 NONOS SDK学习的更多相关文章

  1. ESP8266 NON-OS SDK 和 RTOS SDK实现GPIO中断不同点

    ESP8266 Non-OS SDK 和 RTOS SDK 实现GPIO的方法稍有不同: 对于 Non-OS SDK,比如需要把 MTDO 配置成输入,同时下降沿触发中断: gpio_init(voi ...

  2. 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障

    前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下: examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误.在bo ...

  3. 聊聊ESP8266的SDK(ESP8266_RTOS_SDK v3.3 环境搭建)

    ESP8266_RTOS_SDK发行版本v3.3-rc1环境搭建 在大学期间玩8266所接触的都无操作系统版本的SDK,但后来接触了ESP32后发现ESP8266也推出了RTOS版本,一直都没来得及去 ...

  4. ESP8266 RTOS SDK开发

    ESP8266 RTOS SDK开发 目录 ESP8266 RTOS SDK开发 一.源码RTOS SDK包的下载和编译 二.固件烧录 1.管脚定义 三.程序例程 ## 1.PWM设置 连接MQTT ...

  5. 关于esp8266的SDK开发串口打印mismatch map 3,spi_size_map 6 system_partition_table_regist fail解决办法

    最近在学习esp8266 用的sdk开发,烧录碰到个问题,本人使用的esp8266模块是esp8266-12f,模块是4M的也就是32Mbit 参考了网上的很多办法,大部分写的不清楚也没解决,摸索了几 ...

  6. ESP8266 RTOS SDK编译环境搭建

    前提条件 1. linux操作系统或者windows下的linux虚拟机或者OS X操作系统 2. 联网 下载 * [Mac](https://dl.espressif.com/dl/xtensa-l ...

  7. ESP8266 RTOS SDK烧写环境构建

    简介 esptool是一个Python软件程序,适用于ESP8266等一系列芯片的烧写,灵活高效. 环境构建 在官网下载安装最新2.7版python (linux和os x一般会自带python2.7 ...

  8. ESP8266清理flash学习记录

    学习来源:http://bbs.eeworld.com.cn/thread-497588-1-1.html 还稍看了电子产品世界 主要内容 1在windows 上通过 命令行 安装  Python环境 ...

  9. dialog BLE SDK 学习(3)

    dialog DA14580 SDK版本:5.0.4. 本文介绍了DA14580 SDK的学习感想和建议,分享给大家. 首先,Dialog官网上的资料挺全的,但是是英文的,如果英文不好,比如笔者,阅读 ...

随机推荐

  1. NLog自定义Target之MQTT

    NLog是.Net中最流行的日志记录开源项目(之一),它灵活.免费.开源 官方支持文件.网络(Tcp.Udp).数据库.控制台等输出 社区支持Elastic.Seq等日志平台输出 实时日志需求 在工业 ...

  2. Vue回炉重造之封装防刷新考试倒计时组件

    <!-- 考试倒计时组件 --> <template> <div class="time"> <p>00:{{timerCount2 ...

  3. VueX的模块你知道多少?

    为什么会出现VueX的模块呢?当你的项目中代码变多的时候,很难区分维护.那么这时候Vuex的模块功能就这么体现出来了. 那么我们就开始吧!一.模块是啥? /* eslint-disable no-un ...

  4. Spring框架系列(4) - 深入浅出Spring核心之面向切面编程(AOP)

    在Spring基础 - Spring简单例子引入Spring的核心中向你展示了AOP的基础含义,同时以此发散了一些AOP相关知识点; 本节将在此基础上进一步解读AOP的含义以及AOP的使用方式.@pd ...

  5. Linux shell 2>&1的意思

    在脚本里经常看到 ./xxx.sh > /dev/null 2>&1 ./xxx.sh > log.file 2>&1 在shell中输入输出都有对应的文件描述 ...

  6. 卸载office密钥

    一.管理员身份运行命令提示行: 二.命令提示行上输入: cd C:\Program Files\Microsoft Office\Office16 弹出如下内容: C:\Program Files\M ...

  7. Tomcat深入浅出(一)

    一.Tomcat简介 我们下载好Tomcat后需要配置一下Java环境:如果打开出现闪退得情况,首先是jdk 同时配置JRE_HOME Tomcat的一些关键目录: /bin:存放用于启动及关闭的文件 ...

  8. 温控器/胎压检测/电表/热泵显示控制器等,低功耗高抗干扰断/段码(字段式)LCD液晶显示驱动IC-VK2C22A/B,替代市面16C22,44*4/40*4点显示

    产品品牌:永嘉微电/VINKA 产品型号:VK2C22A/B 封装形式:LQFP52/48 产品年份:新年份 概述: VK2C22是一个点阵式存储映射的LCD驱动器,可支持最大176点(44SEGx4 ...

  9. IM系统-消息流化一些常见问题

    原创不易,求分享.求一键三连 之前说过IM系统的一些优化,但是在网络上传输数据对于数据的流化和反流化也是处理异常情况的重点环节,不处理好可能会出现一些消息发送成功,但是解析失败的情况,本文就带大家来一 ...

  10. raspberry pi使用笔记

    1.raspberry pi系统vim问题 习惯了Linux的vim的使用,但是在raspberry pi中,用apt-get install vim后,vim变得很难用,进入编辑模式,输入字母时会莫 ...