ESP8266 NONOS SDK学习
一、概况
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学习的更多相关文章
- ESP8266 NON-OS SDK 和 RTOS SDK实现GPIO中断不同点
ESP8266 Non-OS SDK 和 RTOS SDK 实现GPIO的方法稍有不同: 对于 Non-OS SDK,比如需要把 MTDO 配置成输入,同时下降沿触发中断: gpio_init(voi ...
- 配置ESP8266 NONOS SDK时由于工具链版本差异引发的故障
前几天部署ESP8266_NONOS_SDK时遇到了一个看似奇怪的问题,描述如下: examples例程可以通过编译,但烧写到ESP8266模块后,程序无法正常运行,编译和烧写的相关配置均无误.在bo ...
- 聊聊ESP8266的SDK(ESP8266_RTOS_SDK v3.3 环境搭建)
ESP8266_RTOS_SDK发行版本v3.3-rc1环境搭建 在大学期间玩8266所接触的都无操作系统版本的SDK,但后来接触了ESP32后发现ESP8266也推出了RTOS版本,一直都没来得及去 ...
- ESP8266 RTOS SDK开发
ESP8266 RTOS SDK开发 目录 ESP8266 RTOS SDK开发 一.源码RTOS SDK包的下载和编译 二.固件烧录 1.管脚定义 三.程序例程 ## 1.PWM设置 连接MQTT ...
- 关于esp8266的SDK开发串口打印mismatch map 3,spi_size_map 6 system_partition_table_regist fail解决办法
最近在学习esp8266 用的sdk开发,烧录碰到个问题,本人使用的esp8266模块是esp8266-12f,模块是4M的也就是32Mbit 参考了网上的很多办法,大部分写的不清楚也没解决,摸索了几 ...
- ESP8266 RTOS SDK编译环境搭建
前提条件 1. linux操作系统或者windows下的linux虚拟机或者OS X操作系统 2. 联网 下载 * [Mac](https://dl.espressif.com/dl/xtensa-l ...
- ESP8266 RTOS SDK烧写环境构建
简介 esptool是一个Python软件程序,适用于ESP8266等一系列芯片的烧写,灵活高效. 环境构建 在官网下载安装最新2.7版python (linux和os x一般会自带python2.7 ...
- ESP8266清理flash学习记录
学习来源:http://bbs.eeworld.com.cn/thread-497588-1-1.html 还稍看了电子产品世界 主要内容 1在windows 上通过 命令行 安装 Python环境 ...
- dialog BLE SDK 学习(3)
dialog DA14580 SDK版本:5.0.4. 本文介绍了DA14580 SDK的学习感想和建议,分享给大家. 首先,Dialog官网上的资料挺全的,但是是英文的,如果英文不好,比如笔者,阅读 ...
随机推荐
- 怎么理解相互独立事件?真的是没有任何关系的事件吗?《考研概率论学习之我见》 -by zobol
1.从条件概率的定义来看独立事件的定义 2.从古典概率的定义来看独立事件的定义 3.P(A|B)和P(A)的关系是什么? 4.由P(AB)=P(A)P(B)推出"独立" 5.从韦恩 ...
- 开始讨论离散型随机变量吧!《考研概率论学习之我见》 -by zobol
上一文中,笔者给出了随机变量的基本定义:一个可测映射,从结果空间到实数集,我们的目的是为了引入函数这个数学工具到考研概率论中,但是我们在现实中面对的一些事情结果,映射而成的随机变量和其对应的概率值,并 ...
- Java 将HTML转为XML
本文介绍如何通过Java后端程序代码来展示如何将html转为XML.此功能通过采用Word API- Free Spire.Doc for Java 提供的Document.saveToFile()方 ...
- Vue.js CLI4 Vue.config.js标准配置 (最全注释)
前言: Vue.js CLI工具 不知不觉发展到了4.0时代,CLI给人最直白的感受是没有了build文件夹跟config文件夹,所有的配置都在Vue.config.js完成.那么该文件的配置至关重要 ...
- Vue2自定义插件的写法-Vue.use()
最近在用vue2完善一个项目,顺便温习下vue2的基础知识点! 有些知识点恰好没用到时间一长就会淡忘,这样对自己是一种损失. 定义一个对象 对象里可以有任何内容 但install的函数是必不可少的,因 ...
- WPF开发随笔收录-心电图曲线绘制
一.前言 项目中之前涉及到胎儿心率图曲线的绘制,最近项目中还需要添加心电曲线和血样曲线的绘制功能.今天就来分享一下心电曲线的绘制方式: 二.正文 1.胎儿心率曲线的绘制是通过DrawingVisual ...
- NC24724 [USACO 2010 Feb S]Chocolate Eating
NC24724 [USACO 2010 Feb S]Chocolate Eating 题目 题目描述 Bessie has received \(N (1 <= N <= 50,000)\ ...
- 史上最全学习率调整策略lr_scheduler
学习率是深度学习训练中至关重要的参数,很多时候一个合适的学习率才能发挥出模型的较大潜力.所以学习率调整策略同样至关重要,这篇博客介绍一下Pytorch中常见的学习率调整方法. import torch ...
- 服务器与Ajax
前端相关的技术点 HTML 主要用来实现页面的排版布局 CSS 主要用来实现页面的样式美化 JavaScript 主要用来实现前端功能特效 Ajax基础知识铺垫 客户端与服务器 通信协议( ...
- Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布
https://www.bilibili.com/video/BV1tT411g7PA/?aid=470724972&cid=766317673&page=1 点击上方链接,一分钟快速 ...