TT Arduino源码细读.1
我们这次读源码,一行一行的带你上车
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%的空间
这个是编译过程的一点警告,我有空改了合并到库