esp32在Arduino中配置流程以及部分问题解决方案

概述

在配置mac os下,esp32在Arduino中的开发环境,遇到了一些问题,最终得到解决。
在这汇总整理,希望能够帮助到大家。

串口的确认

查看端口

这里用到终端命令行的方式确认串口名称

请将以下命令运行两次。首先,断开开发板或适配器,首次运行以下命令;然后,连接开发板或适配器,再次运行以下命令。其中,第二次运行命令后出现的端口即是 ESP32 对应的串口:

ls /dev/cu.*

确认串口连接
  • ls /dev/cu.*

    ![Copy to clipboard](

  • 您会看到类似如下输出:

    /dev/cu.Bluetooth-Incoming-Port /dev/cu.SLAB_USBtoUART /dev/cu.SLAB_USBtoUART7

    !

  • 根据您连接到电脑上的开发板类型和数量,输出结果会有所不同。请选择开发板的设备名称,并运行以下命令:

    screen /dev/cu.device_name 115200

如果打印出的日志是可读的(而不是乱码),则表示串口连接正常。此时,您可以继续进行安装,并最终将应用程序上载到 ESP32。

Arduino上的串口预确认

可以打开工具栏-串口监视器查看情况。

驱动方面

cp2102驱动安装
cp210x驱动安装

Arduino自带的环境配置

打开 Arduino IDE 首选项:

在【附加开发板管理器网址】中填入url:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

打开【工具】【开发板管理器】,安装esp32平台:

在这里插入图片描述

(这里有几个版本可以选择,我在下载安装最新版本后在上传时出现了不同类型的报错。尚且未知原因,如果出现报错,可以尝试安装早些时候的版本。)

(这里下载由于下载源的原因经常会下载失败,这里需要不时的连续尝试下载)

安装之后在开发板可以看到,选择ESP32开发板

安装完成,重启Arduino IDE。

报错示例

“time out waiting for packet content”

“invalid head of packet(0x00)”

串口监视器乱码

波特率的选择错误,选择匹配的波特率即可正确输出。

在这里插入图片描述

根据主板型号“完整配置”主板上传程序环境设置

尤其是upload speed 一项,否则可能出现上传失败的情况。
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32 ,可以使用 attachInterrupt() 函数来配置外部断。在 ARDUINO IDE ,可以使用 attachInterrupt() 函数来实现按键断的优先级配置。下面是一个示例代码: ```C++ const int buttonPin1 = 2; // 按键1引脚 const int buttonPin2 = 4; // 按键2引脚 volatile bool button1Pressed = false; // 按键1是否被按下的标志 volatile bool button2Pressed = false; // 按键2是否被按下的标志 void IRAM_ATTR button1ISR() { button1Pressed = true; } void IRAM_ATTR button2ISR() { button2Pressed = true; } void setup() { // 配置按键1断 pinMode(buttonPin1, INPUT_PULLUP); attachInterrupt(buttonPin1, button1ISR, FALLING); // 配置按键2断 pinMode(buttonPin2, INPUT_PULLUP); attachInterrupt(buttonPin2, button2ISR, FALLING); } void loop() { // 处理按键1断 if (button1Pressed) { button1Pressed = false; // 处理按键1被按下的操作 } // 处理按键2断 if (button2Pressed) { button2Pressed = false; // 处理按键2被按下的操作 } } ``` 在上面的示例代码,我们使用了 IRAM_ATTR 宏来定义了两个断服务程序(ISR),即 button1ISR() 和 button2ISR()。这是因为在 ESP32 断服务程序必须放在 IRAM ,否则会导致程序出错。然后,我们在 setup() 函数使用 attachInterrupt() 函数来配置了按键 1 和按键 2 的断。在 loop() 函数,我们使用了一个无限循环来不断地检测按键是否被按下,并执行相应的操作。注意,我们使用了 volatile 关键字来定义了两个变量 button1Pressed 和 button2Pressed,这是因为这两个变量将被断服务程序修改,如果不使用 volatile 关键字,可能会导致程序出错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值