ESP8266_RTOS_SDK3.2 之获取芯片ID(chip id)
ESP8266 SDK 获取CHIP_ID
在实际的项目当中,我们有的时候需要一个唯一的芯片ID,使得同一份固件可以得到不同的ID,之前用过nodemcu的固件,里面有一个函数node.chipId(),这个函数可以用来获取某一个ESP8266的ID,但是RTOS_3.2版本中我并未找到相关的函数可以调用,就打算自己编写一个加入SDK当中去。接下是代码和方法。
一、添加定义
把这个获取ID放到esp_system.h中最为合适:先找到\components\esp8266\include目录下的esp_system.h,添加一下下面的函数定义,传入的参数是一个32位整形指针,用于存放芯片ID
/*** @brief Get the chip id .** @param chip_id the chiip id .length 32 bit.** @return ESP_OK on success*/
esp_err_t get_chip_id(uint32_t* chip_id);
二、添加实现
在\components\esp8266\source目录下找到system_api.c 然后添加以下代码:
esp_err_t get_chip_id(uint32_t* chip_id){esp_err_t status = ESP_OK;*chip_id = (REG_READ(0x3FF00050) & 0xFF000000) |(REG_READ(0x3ff0005C) & 0xFFFFFF);return status;
}
三、测试
#include <stdio.h>#include "esp_system.h"/******************************************************************************* FunctionName : app_main* Description : entry of user application, init user function here* Parameters : none* Returns : none
*******************************************************************************/
void app_main(void)
{uint32_t id ;get_chip_id(&id);printf("SDK version:%s,chip id:%u\n", esp_get_idf_version(),id);}
三、总结
测试了两块,一块是2865516771,一块是3045330318,是不一样的,不过这个是否唯一还不好说,只能说重复率很低,上述的这种获取方法是和mac地址有关的。
搞出来的过程有点点复杂,先是找了nodemcu的源码,看了源码后又去看了ESP8266_RTOS的源码,最后终于搞出来了。
ESP8266_RTOS_SDK3.2 之获取芯片ID(chip id)相关推荐
- stm32获取芯片的96位ID
stm32获取芯片ID stm32芯片ID的地址 stm32的芯片地址为:0x1FFFF7E8~0x1FFFF7F3 因为我们芯片的ID都是96位 所以我们就可以建立一个数组才存储这个ID 一般数据的 ...
- jQuery获取带点的id元素
一般jQuery获取某个id为elem元素,只需用$('#elem')就行了,但是如果id中不小心包括了'.' ,那么我吗就会发现这时候jQuery就不能获取到这个元素了.但是使用dom原生的getE ...
- insert数据时,获取插入数据的id
insert数据时,获取插入数据的id 当运行完插入语句后,执行select @@identity就可得到自动生成的id 如果是sql server 最好用select SCOPE_IDENTITY( ...
- mysql 获取刚插入行id汇总
mysql 获取刚插入行id汇总 我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的. ...
- c++ 获取线程id_高效获取当前线程的 id
不同平台获取当前线程 id 的方法 Windows 可以利用微软提供的 api,轻松获取当前线程的 id: int id = GetCurrentThreadId(); Linux Linux 平台一 ...
- WIN32开发:如何获取父进程的ID
众所周知,windows中的进程是可以有父子关系的,拥有父子关系的进程,一旦父进程结束,子进程有会随之退出.但是如果进程之间没有父子关系,我们如何让子进程在父进程退出是也同时跟着退出呢?方法有很多,本 ...
- php mysql获取新添加记录的id值_PHP获取MySql新增记录ID值的方法
今天发现用mysql_insert_id()获取到的新增记录的id不正确, 虽然发现源代码的事务写的有问题,但是最根本的原因是,我插入数据的id类型是bigint型 获取MySql新增记录ID值的方法 ...
- 【ARM】Tiny4412裸板编程之Chip ID
00. 目录 文章目录 00. 目录 01. Chip ID概述 02. 寄存器介绍 03. 程序示例 04. 编译执行 05. 附录 01. Chip ID概述 The Exynos 4412 SC ...
- jquery 获取 id ,但是id 里面不能有. 这个符号
因为要上传嵌套的变量 例如 rose.roseId,结果jquery 不能读取这个id -> .jquery 获取 id ,但是id 里面不能有. 这个符号 ,都是坑啊,
最新文章
- ASP.NET远程连接数据库SQL server
- 什么是分布式_终于搞懂分布式锁是什么了
- Ionic介绍以及搭建环境、新建和运行项目
- 详解css样式处理的优先级
- elasticsearch-1.3.0 之索引代码粗略梳理
- C#------如何判断输入的是否为纯数字
- 【C++基础】模板基础与函数模板
- Kendo UI开发教程:Kendo UI模板概述
- sitck-breaking折棍法理解
- Python中常用的一些库
- 51nod 1133 不重叠的线段
- 数据结构课设之航空订票系统(Java)下载链接在文末
- Appium:ios自动化环境搭建
- 希尔伯特矩阵(Hilbert matrix)
- VSCODE + 搜狗输入法,文字突然变成了繁体字,为什么?
- android全屏状态栏是黑色,解决DialogFragment全屏时状态栏变黑
- Python实现视频转代码舞
- 微信小程序如何发布?发布流程怎么样
- R语言在线地图神器:Leaflet for R包(二)基础底图
- _stricmp与stricmp的关系