b2c信息网

您现在的位置是:首页 > 热点问题 > 正文

热点问题

怎么看arduino程序源码(arduino代码是什么语言)

hacker2022-09-03 13:55:21热点问题108
本文目录一览:1、怎样查看arduino自带的函数源代码2、

本文目录一览:

怎样查看arduino自带的函数源代码

D:\Program Files\Arduino\hardware\arduino\cores\arduino的wiring_digital.c文件或D:\Program Files\Arduino\hardware\arduino\cores\robot的wiring_digital.c文件

pre t="code" l="cpp"#define ARDUINO_MAIN

#include "wiring_private.h"

#include "pins_arduino.h"

void pinMode(uint8_t pin, uint8_t mode)

{

uint8_tbit = digitalPinToBitMask(pin);

uint8_tport = digitalPinToPort(pin);

volatileuint8_t *reg, *out;

if(port == NOT_A_PIN) return;

//JWS: can I let the optimizer do this?

reg= portModeRegister(port);

out= portOutputRegister(port);

if(mode == INPUT) {

uint8_toldSREG = SREG;

cli();

*reg= ~bit;

*out= ~bit;

SREG= oldSREG;

}else if (mode == INPUT_PULLUP) {

uint8_toldSREG = SREG;

cli();

*reg= ~bit;

*out|= bit;

SREG= oldSREG;

}else {

uint8_toldSREG = SREG;

cli();

*reg|= bit;

SREG= oldSREG;

}

}

Arduino UNO开发板驱动安装成功,在计算机的 中查看 是否显示Arduino。

显示

Arduino是一个开源电子原型平台。主要通过Arduino IDE(集成开发环境)通过USB与可编程的电路板(微控制器)进行交换数据以达到开发目的

如何在Atom编译Arduino程序和上传到单片机?

如果编译和上传分离到不同的机器上执行,可以使用下面方式。

依赖

安装arduino环境

sudo apt-get install arduino

编译

在Arduino IDE环境下,写好源码程序(以.ino结尾的文件)。然后

Arduino - Preferences -”Show verbose output during”选择”compilation”。点击编译,在下方的输出框最后一行显示如下内容

/usr/share/arduino/hardware/tools/avr/bin/avr-objcopy -O ihex -R .eeprom /tmp/build355782919138539048.tmp/Blink.cpp.elf /tmp/build355782919138539048.tmp/Blink.cpp.hex

可以得知, 源码(.ino)编译后生成的二进制文件为/tmp/build355782919138539048.tmp/Blink.cpp.hex

上传

把上一步编译生成的二进制文件上传到arduino控制板上。

/usr/share/arduino/hardware/tools/avrdude -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:/tmp/build355782919138539048.tmp/Blink.cpp.hex:i

Arduino为什么只有loop和setup函数,揭开Arduino的神秘面纱

Arduino工程源码分析

本次分析基于Arduino 1.0.6

一、我相信大家第一次打开一个Arduino例子的时候,肯定跟我一样,有一种疑惑,

按以往经验,一般会有一个main函数,可是这里却只有一个loop()函数和setup()函数,

为什么呢????????

看到这里,没有main函数怎么运行下去。。。。。。。。。。。。。。。。。。?

运行机制是怎么样??

一系列问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

然后咱们揭开它神秘的面纱-----

首先大家可以用代码浏览神器Source Insight来建立一个工程,方便查看

明确自己Arduino的安装目录,这里我的是D:\Program Files\Arduino

建立工程后添加源码D:\Program Files\Arduino\hardware\arduino\cores\arduino

OK!!!建立工程完成后,开始分析---------

在工程浏览搜索mian 看到出现main.cpp

看到上面代码 , 是不是恍然大悟了~_~

这里告诉大家,为什么Arduino里面的loop()函数是执行完一次,再执行,也就是无限次执行loop,for循环,大家都知道

如果大家想要只执行一次loop()的话,可以考虑来个while(1)

继续。。。。。。。。。

看到mian函数里面的init()没有,跟进去,一探究竟

里面第一句注释:这个函数必须在setup之前执行,否则很多功能将无法工作

这个初始化函数里面sei().打开所有的中断什么的,还有其他就是些寄存器初始化

回到mian函数往下看

_attribute_的weak属性,这里的作用是弱符号:若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak symbol(弱符号),则这些全局符号不会引发重定义错误。链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可用时,链接器会使用弱符号。

也就是防止定义的一样产生冲突。

继续往下是USB功能的使能USBDevice.attch()

然后是for循环里面的串口

二、看完后知道了运行机制了吧

看下面的点灯程序

跟进pinMode()函数,基本上都是寄存器和另一些函数的操作

跟进digitalWrite()函数,还是寄存器和另一些函数的一些操作

终于明白,原来Arduino只是把底层封装了,让新手远离寄存器的复杂操作

怎样读出已经写入arduino的程序

随便搞个程序再刷下一遍就好了。arduinoIDE里,没有把专门擦除的操作弄出来,只是下载程序前进行一次擦除动作。其实arduino的下载程序包括了:擦除+刷写+校验。

arduino用是avr芯片,对芯片操作用的avrdude这个开源软件,可以去研究一下avrdude,这个软件已经集成在arduinoIDE里了。

发表评论

评论列表

  • 惑心春慵(2022-09-03 17:51:15)回复取消回复

    5、怎样读出已经写入arduino的程序怎样查看arduino自带的函数源代码D:\Program Files\Arduino\hardware\arduino\cores\arduino的wiring_digital.c文件或D:\Program Files\Arduino\har

  • 只酷迟山(2022-09-03 23:41:43)回复取消回复

    ex上传把上一步编译生成的二进制文件上传到arduino控制板上。/usr/share/arduino/hardware/tools/avrdude -patmega2560 -cwiring -P/dev/ttyACM0 -b11

  • 竹祭疚爱(2022-09-03 19:19:44)回复取消回复

    e\arduino\cores\robot的wiring_digital.c文件pre t="code" l="cpp"#define ARDUINO_MAIN#include "wiring_private.h"#include "pins_arduino.h"void pinMode

  • 绿邪辞取(2022-09-03 18:08:06)回复取消回复

    oldSREG;}else if (mode == INPUT_PULLUP) {uint8_toldSREG = SREG;cli();*reg= ~bit;*out|= bit;SREG= oldSREG;}else {uint8_toldSREG

  • 绿邪纯乏(2022-09-03 17:00:55)回复取消回复

    t = digitalPinToPort(pin);volatileuint8_t *reg, *out;if(port == NOT_A_PIN) return;//JWS: can I let the optimizer do this?reg= p