ESP8266二次入坑笔记(4) NONOS 3.0程序架构与注意事项

一、前言

在完成了搭建环境与编译烧录后,接下来需要了解一下3.0版本的程序架构。

二、本文参考资料

1.esp8266_nonos_3.0版本的API使用文档.pdf(乐鑫官方文档)
2.https://www.bilibili.com/video/BV1dJ411S723?p=12(技小新8266教程)

三、正文部分

3.1 程序架构

ESP8266的SDK编程是基于“内核回调”的方式
user_main.c 文件中:

void user_init(void)		//8266内核为用户提供的初始化接口:用户的【应用功能初始化】入口
{
	初始化...;	//IO口、定时器、设置中断...
}

用户看不见,不能修改

{
	内核初始化...
	user_init();	//执行 用户的【应用功能初始化】
	while(1)	//类似主循环
	{
		执行内核功能...
		执行用户功能...	//比如:用户初始化中设置了1s定时,那么在这里将会进行定时器计时
	}
}

回调函数 //当满足某条件时,内核调用这些回调函数

void xxx_cb(void)
{
	LED闪烁...
}

任务函数 //如果安排了任务,在系统空闲时,内核会调用任务函数

void xxx_Task(void)
{
	...
}

中断函数 //当触发中断时,进入中断函数

void xxx_IRQHandler(void)
{
	...
}

以下是官方文档的介绍
Non-OS SDK 为用户提供了一套应用程序编程接口 (API),能够实现 ESP8266 的核心功能,例如数据接收/发送、 TCP/IP 功能、硬件接口功能,以及基本的系统管理理功能等。用户不必关心底层网络,如 Wi-Fi、 TCP/IP 等的具体实现,只需要专注于物联网上层应用的开发,利用相应接口实现各种功能即可。
ESP8266 物联网平台的所有⽹网络功能均在库中实现,对用户不不透明。用户应用的初始化功能可以在 user_main.c 中实现。

void user_init(void) 是上层程序的入口函数,给用户提供一个初始化接口,用户可在该函数内增加硬件初始化、网络参数设置、定时器器初始化等功能。

• 对于 ESP8266_NONOS_SDK_v3.0.0 及之后版本,请在 user_main.c 增加函数void ICACHE_FLASH_ATTR user_pre_init(void),并且user_pre_init 中注册自己的 partition table。

对于 ESP8266_NONOS_SDK_v2.1.0 及之后版本,用户如果并未使用 DIO-To-QIO flash,可以在 user_main.c 中增加空函数 void user_spi_flash_dio_to_qio_pre_init(void)来优化 iRAM 空间。
SDK 中提供了了对 JSON 包的处理理 API,用户也可以采用自定义数据包格式,自行对数据进行处理。
Non-OS SDK 不像基于 RTOS 的应用程序支持任务调度。 Non-OS SDK 使用四种类型的函数:
- 应用函数
- 回调函数
- 用户任务
- 中断服务程序 (Interrupt Service Routines, ISR)

3.2 SDK编程注意事项

1. 请勿频繁调用定时器
2. 微秒定时器不是很精确
3. ESP8266 通常的运行速率为 80 MHz,在高性能应用中也可以配置为160MHz。请注意,外设不受CPU 频率设置的影响,因为它们使用了不同的时钟源。
4. 添加了 ICACHE_FLASH_ATTR 的代码通常比使用 IRAM_ATTR 标记的代码执行得慢。然而,像大多数嵌入式平台一样, ESP8266 的 iRAM 空间有限,因此建议一般代码添加ICACHE_FLASH_ATTR,仅对执行效率要求高的代码添加 IRAM_ATTR宏。
5. RAM 和 flash 访问必须是 4 字对齐的,请勿直接进行指针转换。请使用os_memcpy 或其他 API 进行内存操作

3.3 如何添加第三方文件

1.添加uart.c文件
在这里插入图片描述

2.添加uart.h与uart_register.h
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值