保姆级教程手把手教你使用Arduino开发ESP32-2-熟悉常用示例

在真正玩转开发板和创新设置之前,我们得先熟悉一下常用的示例。如果说后面的各个创意设计是大餐,那么前面的常用示例,就是前菜。好像也不对,前面的创意设计应该是各种食材。熟悉各种食材的属性,才能够进行不同的搭配。

我们这一节先学习和了解ESP32中最常见也是最基本的一系列应用。

2.1 ChipID

通过ChipID这个例子,我们可以读取ESP32对应的硬件版本信息。

根据前一节介绍的,arduino代码分为setup和loop两部分,其中setup用来完成前面的初始化。而loop用来完成不同的功能。

2.1.1定义全局变量

uint32_t chipId = 0;

放在setup之前的变量通常为全局变量,全局变量可以在多个代码块中进行调用。这里的chipId就在后面的loop中进行调用。

2.1.2 SETUP初始化串口

void setup() {
	Serial.begin(115200);
}

setup很简单,仅仅初始化了串口。

2.1.3 loop实现打印功能

void loop() {
	for(int i=0; i<17; i=i+8) {
	  chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
	}

	Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
	Serial.printf("This chip has %d cores\n", ESP.getChipCores());
  Serial.print("Chip ID: "); Serial.println(chipId);
	delay(3000);
}

Loop中有些意思。下面一点一点梳理一下:

1.for循环:循环中,i从0开始,每次+8,也就是循环3次,对应i值为0, 8, 16;

2. chipId |=:前面chipId初始值为0, |=将对应的数值设置为1;

3. ESP.getEfuseMac()函数获取MAC地址,然后通过>>右移操作,右移3次。第一次右移40bit,第二次右移32bit 第三次由于24bit;

4. & 0xff取得最右边的16bit

5. <<i将数值再左移回去,注意,这里左移会达到逆序效果;

6.具体操作类似下面的图:

 

 所以最后得到的chipId应该是MAC的最高3个byte的逆序排列。

10进制还看不太清除

 

转换为16进制就很清楚了。

可以看到,MAC的最左边为D8 D3 7D,经过右移再左移逆序,变为7D 。

	Serial.printf("ESP32 Chip model = %s Rev %d\n", ESP.getChipModel(), ESP.getChipRevision());
	Serial.printf("This chip has %d cores\n", ESP.getChipCores());

 这里用到了getChipModel, getChipRevision, getChipCores这些函数,分别读取芯片型号,版本号,内核数量等信息。

未完待续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值