全部学习汇总: ​​https:///GreyZhang/arduino_uno​

         在进行各种例程调试的时候,我们知道Arduino的工程中有一个初始化的函数setup,还有一个无线循环loop。

471_Arduino初始化以及loop的实现_编译报错

         这是其中的一个例子,如果把这两个函数改一个名字会出现报错。例如,我修改一下setup为setup_test,之后打开编译的详细输出。

471_Arduino初始化以及loop的实现_初始化_02

         链接的时候,找不到这个函数。

         为什么会出现这种情况呢?我在逐个漫游分析Arduino的库实现的时候,找到了这个相应的设计。

471_Arduino初始化以及loop的实现_编译报错_03

         决定这个设计的,其实就是上面的main.cpp。我们看看这个文件中的具体内容:

471_Arduino初始化以及loop的实现_github_04

         这里,两个函数全都出现了。其中的一个是在初始化阶段,也就是正式进入到main函数中的无线循环之前。而loop则是在无线循环中,里面还有一个串口事件的判断。我还没有去分析这个具体实现,但是我估计BootLoader的实现大概与此相关。

         做一个测试,把这个loop修改为loop_test,这样,应该我的例程也得改成这样才会编译通过。修改如下:

471_Arduino初始化以及loop的实现_github_05

         为了保证编译通过,这里我还增加了一个函数的声明。

471_Arduino初始化以及loop的实现_初始化_06

         编译报错,也确切可以看得到用到的就是这个文件。接下来,修改例程:

471_Arduino初始化以及loop的实现_github_07

         编译顺利通过,软件烧写之后运行也正常。

471_Arduino初始化以及loop的实现_github_08