基于上海乐鑫ESP系列的开发板:修订间差异

来自Ubuntu中文
跳到导航跳到搜索
Nsynet留言 | 贡献
创建页面,内容为“![微信图片\_20240902233048.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/bbd5838afcc94925b571808e19c87eaf~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=SfzBQL6zqFJVZmAofUevGQIfhiM%3D) ![微信图片\_20240902233058.jpg](https://p0-xtjj-private…”
 
Nsynet留言 | 贡献
页面内容被替换为“ test”
标签替换
 
第1行: 第1行:
![微信图片\_20240902233048.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/bbd5838afcc94925b571808e19c87eaf~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=SfzBQL6zqFJVZmAofUevGQIfhiM%3D)


![微信图片\_20240902233058.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/7179738620324ce1962790a1bc2db1b8~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=2m4cbUW6pWDYD7bHkbgzkA%2BTKls%3D)
test
 
## ESPduino(ESP8266)/WeMos D1(ESP8266)
 
//WeMos D1(ESP8266) 使用ESP-12F模组,SMD-22封装,而ESPduino使用安信可的ESP-13模组,SMD-18封装. <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3746415d336544f0b301b301fe52656d~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=901&#x26;h=1198&#x26;s=1199992&#x26;e=png&#x26;b=f0e9e8" width="40%">
 
![OIP-C.jpg](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/f2814088724b4f97949c4c1937d7b569~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAgZmVmamxzZGZkZnN4:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTk0MzU5MjI4OTQ1MTg5NSJ9&rk3s=f64ab15b&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1726067633&x-orig-sign=trMxGhRxyy7xC0TpIv3tM%2FDStfU%3D)
 
//ESPDuino使用安信可的ESP-13模块(该模块使用ESP8266EX 芯片),该模块的pinout如下: <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3ad1aa50fd1d4dc9b2329d7c400c65fc~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1587&#x26;h=1469&#x26;s=162526&#x26;e=png&#x26;b=fefefe" width="65%">
 
标准arduino IDE开发ESPDuino,需要在“首选项”->"其他开发板管理器地址"下输入:
\`
<https://arduino.esp8266.com/stable/package_esp8266com_index.json>
//ESPDuino使用ESP-13模块(很多书上误写为ESP-12模块) <img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/41bc69e4571d4a4eb7630ec08fba5630~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1322&#x26;h=615&#x26;s=62414&#x26;e=png&#x26;b=f9f9f9" width="55%">
ESP-13模块的原理图:
![image](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d25db74ac50d4daaaabbcd8197e366e9~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=2095\&h=1637\&s=483546\&e=png\&b=fdfcfc)
 
## ESP32
 
### 常用arduino库
 
| 名称                                                                    | 库头文件                            | 用法                                                                                    | 在ESP32上是否能使用 |
| --------------------------------------------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------- | ------------ |
| debug库                                                                | #include "Arduino\_DebugUtils.h" | <p>setup()阶段:Debug.timestampOn(); <br>loop()阶段:DEBUG\_INFO("i = %d,0x%02x", i,i);</p> | Y            |
| Serial Plotter库,Serial Plotter 可以将串口发送的数据以图表的形式显示出来,适合观察数据的变化趋势      |                                  |                                                                                      |              |
| Debugger:这个库可以让你在 Arduino 程序中使用断点、单步执行等调试功能,就像在 PC 上使用集成开发环境调试程序一样。  | #include \<Debugger.h\>          |                                                                                      | 有报错??        |
| SimpleDebug:这是一个简单的调试库,它允许你通过串口发送调试信息,并且可以设置不同的调试级别。                  |                                  |                                                                                      |              |
| DebugLib:这个库为 Arduino 提供了一个简单而强大的调试功能,支持宏定义来启用或禁用调试代码,无需修改代码即可切换调试模式。 |                                  |                                                                                      |              |
| <p>Logging                                                            |                                  |                                                                                      |              |
 
    提供了日志功能,支持不同级别的日志输出,比如调试、信息、警告、错误等。
 
assert
 
    虽然不是库,但 C++ 标准库中的 assert 宏可以在条件不满足时停止程序运行,是检查假设条件的好方法。
 
elibcppdbg
 
    这个库提供了类似标准 C++ 库中的流输出功能,可以将信息输出到串口,方便调试。
 
NeoDebug
 
    一个为 Arduino 设计的轻量级调试库,支持多种数据类型的输出,还可以自定义调试等级。
 
FPRETTY
 
    一个简单的库,用于格式化串口输出,使得调试信息更加易于阅读。</p> | | | |
 
\| | | | |
\| | | | |
\| | | | |
 
## AI回答
 
### Q:arduino IDE编译不同开发板时,ino代码如何区分当前是哪种开发板
 
### A:
 
在 Arduino IDE 中,当你选择不同的开发板时,编译器会包含对应开发板的特定头文件和定义,这允许你在代码中通过条件编译来区分当前是哪种开发板。以下是一些方法来区分不同的开发板:
 
1.  **使用预定义的宏**:
    每个开发板在编译时都会定义一些特定的宏,例如 `ARDUINO`,`ARDUINO_ARCH_{ARCH}` 和 `BOARD` 等。你可以通过这些宏来判断当前的板子。
    ```cpp
    #ifdef ARDUINO_AVR_UNO
    // 代码专门为 Arduino Uno 编写
    #elif defined(ARDUINO_SAM_DUE)
    // 代码专门为 Arduino Due 编写
    #elif defined(ARDUINO_ARCH_ESP8266)
    // 代码专门为 ESP8266 编写
    #elif defined(ARDUINO_ARCH_ESP32)
    // 代码专门为 ESP32 编写
    #endif
    ```
2.  **检查`BOARD`宏**:
    `BOARD`宏通常包含了开发板的名称,你可以用它来区分不同的开发板。
    ```cpp
    #if defined(BOARD) && (BOARD == "AVR_UNO" || BOARD == "AVR_MEGA2560")
    // 代码适用于 Uno 或 Mega2560
    #elif defined(BOARD) && BOARD == "SAMD_ZERO"
    // 代码适用于 Zero 或 itsybitsy_m0
    #endif
    ```
3.  **检查特定开发板的功能或引脚定义**:
    某些开发板可能有特定的功能或引脚定义,你可以检查这些来区分开发板。
    ```cpp
    #if defined(__AVR_ATmega328P__)
    // 代码专门为基于 ATmega328P 的开发板编写
    #elif defined(__SAM3X8E__)
    // 代码专门为基于 SAM3X8E 的开发板编写
    #endif
    ```
4.  **自定义宏**:
    在项目的 `platform.local.txt` 或 `boards.txt` 文件中,你可以为特定的开发板定义自定义宏。然后在代码中使用这些宏。
5.  **使用`pins_arduino.h`文件**:
    每个 Arduino 开发板都有自己的 `pins_arduino.h` 文件,定义了该板的引脚映射。虽然这个文件通常不直接在 `.ino` 文件中使用,但你可以通过包含它来获取板级信息。
    ```cpp
    #include <pins_arduino.h>
    #if defined(PIN_A0)
    // 根据引脚定义区分
    #endif
    ```
 
使用这些方法,你可以在 `.ino` 文件中根据不同的开发板编写特定的代码段,从而确保代码可以在不同的硬件平台上正确运行。记得在编写条件编译代码时,始终要有一个默认的路径,以处理未定义的情况。

2024年9月4日 (三) 23:17的最新版本

test