分享

TT Arduino源码细读.1

 云深无际 2021-11-03

我们这次读源码,一行一行的带你上车

https://github.com/espressif/arduino-esp32

先克隆下来esp32 ardunio core

就是这样的一个目录

我们从第一个默认.ino开始在读

第一个是6个Arduino的公共库,

第一个不说,

第二个是C语言标准的IO库(其实也不标准)

第三个是处理字符串的一个库

第四个是单总线的库 

https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html

注意:要在code中使用任何文件系统功能,请在草图中添加以下内容:

//#include "FS.h" // SPIFFS is declared#include "LittleFS.h" // LittleFS is declared

SPIFFS是原始文件系统,非常适合受空间和RAM限制的应用程序,这些应用程序利用许多小文件并关心静态和动态损耗平衡,并且不需要真正的目录支持。闪存上的文件系统开销也最小。

一个是lib库

一个是shell的包装库

一个是控制库

一个是游戏手柄控制的库

值得一提的是,这个文件就是所谓的原厂固件

shell的头文件

这里打开ESP32的Aduino实现

直接找头文件,可以看到很密集

顺藤摸瓜

开头两句,简单的编译条件语句

大致是把头文件分成三部分

看第二部分,freertos系统的任务头

也有hal的硬件抽象头

这个8266值得玩味

还有芯片GPIO的寄存器库

第三部分,不太懂。不研究了

宏定义

https://www.rdocumentation.org/packages/spacey/versions/0.1.1/topics/rad_to_deg

中断模式

下面还有,我就看到这里。这篇文章并不是给Arduino.h这个库解读的

这里打开的时候是注释状态,所以这里是个调试开关

https://www.cnblogs.com/youngforever/articles/3169629.html

__FILE__,__LINE__   都是与定义的宏,使用_和 __开始的函数一般都是专用的函数,一般都是于特定系统相关的,如果要想有更好的移植性,应该避免使用。

一般只有已经广泛使用的系统库函数和宏才有资格使用_甚至__打头,为的是不与用户定义的名字冲突,所以B.Stroustup在《The   C++   Programming   Language》中告诫我们一般不要使用_或__   打头的标志符,这也是一个编程风格的问题吧。

一个是用uart0当做调试串口

一个是打日志用的

防止一个头文件被重复包含 

    #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif

如果uart0没有被定义,那么就定义为串(0)为普通串口

否则就定义串口1为调试的串口

双击的间隔时间是 500

https://www.dji.com/cn/robomaster-tt/downloads

这里我打开一个tof的demo

serial串口配置

serial串口

serial串口

serial串口

这里搜索一下Serial1

Serial

我这里尝试编译一下,这个地方报错了.说没有这个库

我注释掉继续可以编译

编译成功

大概1000多行程序....占了77%的空间


这个是编译过程的一点警告,我有空改了合并到库

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多