当前位置:   article > 正文

arduino 源码分层浅析_arduion 底层源代码

arduion 底层源代码

背景

最近在瞎鼓捣一些开源硬件 ,arduino便是其中之一,之前就听说他把底层都封装了,对小白用户很友好,很好奇他的封装形式。

代码分析

IDE初始代码

我们在一开始安装arduinoIDE之后,打开之后的初始界面如下,有两个空的函数等着玩家去填充,其他什么代码都没有。

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

然后打开arduino安装目录,找到核心代码终于找到了其中关联部分,在main.cpp中,如下

#include <Arduino.h>

//Declared weak in Arduino.h to allow user redefinitions.
int atexit(void (*func)()) { return 0; }

// Weak empty variant initialization function.
// May be redefined by variant files.
void initVariant() __attribute__((weak));
void initVariant() { }

int main(void)
{
	init();

	initVariant();

#if defined(USBCON)
	USBDevice.attach();
#endif
	
	setup();
    
	for (;;) {
		loop();
		if (serialEventRun) serialEventRun();
	}
        
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

其他相关代码

void setup(void);
void loop(void);
  • 1
  • 2

在main.cpp中可以看出setup()函数只会执行一遍,而loop()函数会一直执行,在arduino源码中只是声明了这两个函数而已,函数实体需要玩家去填充任务代码。
其实这样看来整个框架还是很清晰的,十分简单,做底层工作久了,如果仅仅看到arduinoIDE中的代码难免会有疑惑,和好奇心。
本来还想分析他具体硬件封装代码,看了一下是C++代码,以后有时间再来补充。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号