全部学习汇总: https://github.com/GreyZhang/arduino_uno
在进行各种例程调试的时候,我们知道Arduino的工程中有一个初始化的函数setup,还有一个无线循环loop。
这是其中的一个例子,如果把这两个函数改一个名字会出现报错。例如,我修改一下setup为setup_test,之后打开编译的详细输出。
链接的时候,找不到这个函数。
为什么会出现这种情况呢?我在逐个漫游分析Arduino的库实现的时候,找到了这个相应的设计。
决定这个设计的,其实就是上面的main.cpp。我们看看这个文件中的具体内容:
这里,两个函数全都出现了。其中的一个是在初始化阶段,也就是正式进入到main函数中的无线循环之前。而loop则是在无线循环中,里面还有一个串口事件的判断。我还没有去分析这个具体实现,但是我估计BootLoader的实现大概与此相关。
做一个测试,把这个loop修改为loop_test,这样,应该我的例程也得改成这样才会编译通过。修改如下:
为了保证编译通过,这里我还增加了一个函数的声明。
编译报错,也确切可以看得到用到的就是这个文件。接下来,修改例程:
编译顺利通过,软件烧写之后运行也正常。