乐鑫技术交流
直播中

李进锋

7年用户 879经验值
私信 关注
[问答]

esp8266 FREERTOS 3.3中没有提供CHIP_ID函数,怎么实现获取CHIP_ID的功能?

esp8266 FREERTOS 3.3中没有提供CHIP_ID函数,怎么实现获取CHIP_ID的功能

回帖(1)

醉清歌

2024-7-9 16:05:48
在ESP8266 FreeRTOS 3.3中,虽然没有直接提供CHIP_ID函数,但我们可以通过读取寄存器的方式来获取芯片ID。以下是实现获取CHIP_ID功能的步骤:

1. 首先,我们需要找到ESP8266芯片的寄存器手册。在手册中,我们可以找到与芯片ID相关的寄存器。对于ESP8266,芯片ID寄存器是`0x3FF00050`。

2. 接下来,我们需要编写一个函数来读取这个寄存器的值。在FreeRTOS中,我们可以使用`vPortEnterCritical`和`vPortExitCritical`函数来确保代码在读取寄存器时不会被中断。

3. 编写一个获取CHIP_ID的函数:

```c
#include "freertos/FreeRTOS.h"
#include "freertos/portmacro.h"

uint32_t get_chip_id(void) {
    uint32_t chip_id;
    portENTER_CRITICAL();
    chip_id = READ_PERI_REG(0x3FF00050);
    portEXIT_CRITICAL();
    return chip_id;
}
```

4. 在这个函数中,我们首先进入临界区,然后读取`0x3FF00050`寄存器的值,最后退出临界区并返回芯片ID。

5. 现在,我们可以使用这个函数在程序中获取ESP8266的芯片ID。

请注意,这个解决方案仅适用于ESP8266 FreeRTOS 3.3。如果您使用的是其他版本的FreeRTOS或者不同的硬件平台,可能需要查找相应的寄存器手册并进行相应的修改。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分