Arduino IDE 配置文件

       最近学习Arduino。
       Arduino开源硬件和Arduino IDE是一个很容易上手的系统。
       目前arduino已经支持很多种板类型,甚至已经支持了部分arm芯片。比如arduino ng、arduino uno、arduino mini、pro mini等。但是大多数情况,都是使用的atmega8/atmega168/atmega328/atmega1280/atmega2560等芯片。
       在单片机代码中,需要对不同的引脚、定时器、接口进行操作,由于不同单片机引脚和功能不一样,因此代码无法共用。那么,arduino是如何做到用一份代码就可以分别在不同类型的板子上执行呢?
       其实arduino实现了一个框架,针对不同的芯片,把相同的部分提供一套通用机制,不同的部分抽象出来,制定一套规则,只要所有的芯片都遵守这个规则,就可以正常的工作起来。

    这里主要讲讲arduino各种板子配置文件的规则。


Bootloaders 不同芯片需要的bootloader文件
Cores 单片机程序核心代码所在的位置,这里定义了所有芯片的通用功能,提供了通用的功能比如延时,串口通信,按键,输入输出等基本通用功能
Firmwares 一些固件程序
Libraries 开源库文件,比如eprom,wifi,wire等库文件
Variants 针对不同芯片定义的引脚文件

1、顶层目录:

arduino         ---> arduino IDE启动脚本
examples/     ---> 示例程序目录(通过IDE的 File -> Examples 菜单可以浏览得到)
hardware/     ---> 固件相关的目录(见下方)
lib/               ---> IDE运行需要的库文件(几个jar包)
libraries/       ---> 也是示例程序(通过IDE的 File -> Examples 菜单可以浏览得到)
reference/     ---> Html帮助文档
revisions.txt  
tools/            ---> Mangler工具(不太清楚干嘛用的)

     固件目录:

boards.txt        ---> 各种型号arduino板子参数描述文件,烧写固件时要用到
bootloaders/    ---> 不同芯片需要的bootloader文件
cores/              ---> 单片机程序核心代码所在的位置,这里定义了所有芯片的通用功能,提供了通用的功能比如延时,串口通信,按键,输入输出等基本通用功能
firmwares/       ---> 包含了两个用于ATmega8U2处理器上的二进制固件,如Arduino Mega 2560
programmers.txt
<strong>Firmwares</strong> 一些固件程序
<strong>Libraries</strong> 开源库文件,比如eprom,wifi,wire等库文件
<strong>Variants</strong> 针对不同芯片定义的引脚文件

2、programmers.txt

    打开arduino ide依次选择菜单工具à编程器,可以看到有很多编程器选项。

programmer
    其实这些编程器是通过programmers.txt定义的(arduino-win\1.0.6\arduino-1.0.6\hardware\arduino),这个文件里面主要定义了编程器需要遵守的规则:

以avr isp为例:

See: http://code.google.com/p/arduino/wiki/Platformsavrisp.name=AVR ISP      //在菜单里面呈现出的编程器名称
avrisp.communication=serial //使用的通信接口
avrisp.protocol=stk500v1   //使用的编程协议avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2usbtinyisp.name=USBtinyISP
usbtinyisp.protocol=usbtinyusbasp.name=USBasp
usbasp.communication=usb
usbasp.protocol=usbaspparallel.name=Parallel Programmer
parallel.protocol=dapa
parallel.force=true
# parallel.delay=200arduinoisp.name=Arduino as ISP
arduinoisp.communication=serial
arduinoisp.protocol=stk500v1  //上位机编程协议
arduinoisp.speed=19200   //上位机波特率



3、boards.txt

1.jpg
    打开arduino ide--->工具--->板卡,可以看到arduino支持的板卡。

    这些板卡的行为都是靠boards.txt(arduino-win\1.0.6\arduino-1.0.6\hardware\arduino)来约束的,以Arduino Uno为例

# See: http://code.google.com/p/arduino/wiki/Platforms##############################################################uno.name=Arduino Uno  //板卡的名称
uno.upload.protocol=arduino  //上位机软件使用的协议
uno.upload.maximum_size=32256  //hex最大字节数
uno.upload.speed=115200  //串口波特率
uno.bootloader.low_fuses=0xff  //低位熔丝值,与avr芯片的熔丝位相对应
uno.bootloader.high_fuses=0xde  //高位熔丝值,与avr芯片的熔丝位相对应
uno.bootloader.extended_fuses=0x05  //扩展熔丝位,有的芯片需要
uno.bootloader.path=optiboot  //bootloader文件存储路径
uno.bootloader.file=optiboot_atmega328.hex  //芯片需要的bootloader文件名
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F  
uno.build.mcu=atmega328p  //板卡cpu型号,可以从avrdude中获取
uno.build.f_cpu=16000000L  //板卡使用的晶振频率,用于计算函数库的延时,定时器等函数所需要的参数
uno.build.core=arduino  //单片机程序核心代码所在的位置,这里定义了所有芯片的通用功能,提供了通用的功能,比如延时,串口通信,按键,输入输出等基本通用功能
uno.build.variant=standard  //不同型号芯片的引脚功能定义##############################################################atmega328.name=Arduino Duemilanove w/ ATmega328atmega328.upload.protocol=arduino
atmega328.upload.maximum_size=30720
atmega328.upload.speed=57600atmega328.bootloader.low_fuses=0xFF
atmega328.bootloader.high_fuses=0xDA
atmega328.bootloader.extended_fuses=0x05
atmega328.bootloader.path=atmega
atmega328.bootloader.file=ATmegaBOOT_168_atmega328.hex
atmega328.bootloader.unlock_bits=0x3F
atmega328.bootloader.lock_bits=0x0Fatmega328.build.mcu=atmega328p
atmega328.build.f_cpu=16000000L
atmega328.build.core=arduino
atmega328.build.variant=standard


4、platform.txt
        这个文件里定义了编译步骤,以及每个文件编译使用的编译选项。可以在文件à参数选项 里把显示编译详细信息勾选上,与该txt文件中的内容对比起来看。
3.jpg


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue封装axios接口

一、安装axios axios安装命令&#xff1a;cnpm install axios 二、在文件中引用axios 一开始我是放在src下的main.js这个文件里面&#xff0c;后来发现mounted钩子读取接口方法为undefined&#xff0c;百度了才发现是vue生命周期的原因&#xff0c;最好的解决办法是把axios单独…

编写Arduino支持的C++类库

以下为摘抄的例子&#xff0c;已经亲自验证过&#xff0c;例子是正确的 我们在上一讲中实现了一个TN901红外温度传感器51程序到Arduino程序的转换&#xff0c;如果代码越来越多这样程序的可维护性会随之降低&#xff0c;也不适合团度开发。我们应该把常用的文件封装成C库&#…

【机器学习实战】——常见函数积累

目录 第二章 k近邻算法 1、array.sum(axies 1) : 2、array.argsort(axies0/1) 3、array.tile(mat,(m,n)) 4、dict.get(key,value) 5、sorted函数 6、string.strip()函数 7、string.split() 8、scatter&#xff08;&#xff09;函数 9、min()&max() 10、enumera…

安装oracle 11g 客户端,检查过程中报物理内存不足的解决

今早接到同事电话&#xff0c;说安装oracle 11g客户端的时候&#xff0c;在检查先决条件的时候&#xff0c;报错&#xff0c;说内存不足&#xff0c;但是本机的内存是2G&#xff0c;肯定够用&#xff1a;如图&#xff1a; 找了一圈&#xff0c;原来Oracle执行先决条件检查是依赖…

Codeforces Round #401 (Div. 2) D. Cloud of Hashtags

题目链接&#xff1a;D. Cloud of Hashtags 题意&#xff1a; 给你n个字符串&#xff0c;让你删后缀&#xff0c;使得这些字符串按字典序排列&#xff0c;要求是删除的后缀最少 题解&#xff1a; 由于n比较大&#xff0c;我们可以将全部的字符串存在一个数组里面&#xff0c;然…

史陶比尔机器人的 LLI (Low Level Interface)

史陶比尔机器人的 LLI &#xff08;Low Level Interface&#xff09; 史陶比尔机器人拥有 Low Level Interface (LLI)接口选项. 在CS8C控制器的时代&#xff0c;LLI 接口仍然可用。这是一个选项接口。.这是除了VAL3编程语言之外的替代操作系统。通过C程序替代你的程序。 这里的…

HALCON示例程序check_bottle_crate.hdev啤酒箱内酒瓶数检测

HALCON示例程序check_bottle_crate.hdev啤酒箱内酒瓶数检测 示例程序源码&#xff08;加注释&#xff09; 获取系统关于“空白区域储存的设置” get_system (‘store_empty_region’, StoreEmptyRegion)系统“空白区域储存”设置为 ‘false’ set_system (‘store_empty_regi…

单片机平台的最小偏差圆弧插补算法

在CNC机床的G代码中&#xff0c;最常见的有G0、G1、G2、G3代码&#xff0c;分别表示直线和圆弧插补&#xff0c;直线插补对于单片机来说&#xff0c;比较容易实现&#xff0c;只需要将位移增量转换为脉冲增量然后输出给步进电机就可以了&#xff0c;但对于圆弧插补&#xff0c;…

【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信&#xff0c;比如用ajax向一个不同的域请求数据&#xff0c;或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同&#xff0c;都被当作是不同的域。 下表给出了相对http://store.…

Lua基本语法-lua与C#的交互(相当简单详细的例子)

lua脚本 与 C#的交互 本文提供全流程&#xff0c;中文翻译。Chinar坚持将简单的生活方式&#xff0c;带给世人&#xff01;&#xff08;拥有更好的阅读体验 —— 高分辨率用户请根据需求调整网页缩放比例&#xff09; 1Lua And C# —— Lua 和 C#的交互准备工作 2C# Create Lu…

漫谈程序员系列:千奇百怪的程序员

干开发时间长了&#xff0c;遇见好多好玩儿的程序员。 看看你躺枪了没。 博客之星评选&#xff0c;点击投我一票&#xff0c;谢谢。投过了也可以点哦&#xff0c;每天都可以投投一票。 留一手 有个哥们儿&#xff0c;在一合资公司做程序员&#xff0c;能力挺强&#xff0c;写…

SCARA机器人与 DELTA机器人

1、SCARA机器人SCARA&#xff08;Selective Compliance Assembly Robot Arm&#xff0c;中文译名&#xff1a;选择顺应性装配机器手臂&#xff09;是一种圆柱坐标型的特殊类型的工业机器人。1978年&#xff0c;日本山梨大学牧野洋发明SCARA&#xff0c;该机器人具有四个轴和四个…

一直以来都没直视的轮播-_-

一直以来做项目碰到轮播图我都是去网站上找现成插件拿来用&#xff0c;现成的插件1是省时间&#xff0c;拿来改改尺寸改改参数就能直接用&#xff0c;2是现在的插件确实很强大&#xff0c;对于我一个刚刚学习前端的人来说&#xff0c;牛人写的轮播我看懂也要花些功夫&#xff0…

HALCON示例程序circles.hdev边界轮廓的圆形拟合

HALCON示例程序circles.hdev边界轮廓的圆形拟合 小哥哥小姐姐觉得有用点个赞呗&#xff01; 示例程序源码&#xff08;加注释&#xff09; 读入图片 read_image (Image, ‘double_circle’)窗口初始化 dev_close_window () get_image_size (Image, Width, Height) dev_open…

asp.net 微信企业号办公系统-流程设计--保存与发布

如果流程未设计完时可以先保存&#xff0c;以后再打开接着设计。点击工具栏上的保存按钮即可保存当前流程设计: 如果下次要接着设计&#xff0c;则可以打开该流程继续设计&#xff1a; 如果流程设计完成&#xff0c;可以点击安装按钮来发布流程&#xff0c;流程安装成功后即加入…

Canny边缘检测算法原理及其VC实现详解(二)

3、 Canny算法的实现流程 由于本文主要目的在于学习和实现算法&#xff0c;而对于图像读取、视频获取等内容不进行阐述。因此选用OpenCV算法库作为其他功能的实现途径&#xff08;关于OpenCV的使用&#xff0c;作者将另文表述&#xff09;。首先展现本文将要处理的彩色图片。 …

IDEA注册jar包使用和常用插件

IDEA注册jar包使用 点击获取下载地址或生成注册码 一、安装完成后&#xff0c;先不启动&#xff0c;首先如下图修改相关的地方。 二、启动IDEA&#xff0c;并且激活IDEA IDEA插件仓库 IntelliJ IDEA Plugins 一、Maven Helper 我一般用这款插件来查看maven的依赖树。在不使用此…

Android Monkey压力测试

一. JAVA环境的搭建 安装jdk-8u151-windows-x64,可以到官网或者应用中心下载.JAVA环境变量的搭建: 在"我的电脑"-"属性"-"高级"-"环境变量"中,点击新建,填写变量名为JAVA_HOME,变量值为JAVA安装的路径.在系统变量中找到Path,点击编辑,…

bzoj 4517: [Sdoi2016]排列计数

4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 637 Solved: 396[Submit][Status][Discuss]Description 求有多少种长度为 n 的序列 A&#xff0c;满足以下条件&#xff1a;1 ~ n 这 n 个数在序列中各出现了一次若第 i 个数 A[i] 的值为 i&#x…

自制反汇编逆向分析工具 迭代第六版本 (五)

本工具从最初版的跳转分布图只为了更直观地分析反汇编代码的分支结构&#xff0c;第三版开始对直观图进行逆向分支代码的输出&#xff0c;第四版对分支输出策略的一些探索&#xff0c;第五版结合之前的探索进行改进。第六版在现在功能的基础上进行增强&#xff0c;利用第六版&a…