自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Arduino代码机制-IO

AVR单片机中有三种存储器,Flash, RAM, EEPROM。这篇讨论的是RAM。RAM编址AVR单片机的RAM编址是这样的,最先的是32个通用寄存器,然后是64个I/O寄存器,然后是扩展I/O寄存器,最后才是Internal SRAM。以ATmega2560为例,内存为8192字节。通用寄存器地址范围是0x00到0x1f,I/O寄存器地址范围是0x20到0x5f,扩展I/O寄存器地址范围是0x

2016-02-20 19:24:35 2178

原创 Arduino代码机制-main.cpp

打开ArduinoIDE,会看到只有setup和loop函数,还有几句注释,提示我们把运行一遍的程序放在setup中,把重复运行的部分放在loop中。但是,main函数呢?程序运行入口就是main函数,怎么可能没有main函数呢?原来,Arduino将main函数写好了,放在main.cpp文件中。为什么不让用户自己写main函数呢?main在main函数中还做了一些重要的初始化工作,初始化之后有些

2016-02-18 22:32:19 4188

原创 Arduino代码机制-Serial下

真正开始讲串口了。串口是流的具体实现。串口在类HardwareSerial中描述。类HardwareSerial在Stream的基础上,添加了发送和接收数据缓冲区,实际上是个队列,添加了构造函数和其他实用函数。而我们通常使用的Serial,是HardwareSerial实例化的一个对象。对于不同单片机,他们的串口数目不一样,于是采用预编译的技巧来实例化相应数目的Serial对象。#if define

2016-02-17 20:02:55 3886

原创 Arduino代码机制-Serial中

上一篇说到Print类,是用来将各种数据打印出来的类。Stream类继承了Print,添加了数据的读取和转换功能。同样由于不知道底层实现,跟Print类似,将底层的实现申明为虚函数。Stream读取数据时,可能当前没有数据可读取但数据很快就传送过来,也可能根本就没有数据,为了适应这种不确定性,设定了超时读取时间,超过这个时间还没有读取到数据则读取失败。 protected: unsigned

2016-02-17 16:47:50 1224

原创 Arduino代码机制-Serial上

串口调试是个非常有用的调试技巧,可以在程序中是有Serial.print()输出关键信息,Serial还能与别的设备进行串口通信。Serial是类HardwareSerial的一个对象,用这个对象可以操作串口0。对于有些单片机不止一个串口的,可以用Serial1操作串口1,Serial2操作串口2,Serial3操作串口3。从源文件中可以看到几个类的继承关系,HardwareSerial继承类Str

2016-02-16 21:12:55 2987 1

原创 Arduino代码机制-WString.h

Arduino提供了一个非常有用库,用来处理字符串,支持RAM和Flash中的字符串处理。并且重载了一些运算符,使得我们可以使用==来判断两个字符串是否相等,用=来对字符串对象赋值,用+来连接两个字符串,用[]来取字符串中某个字符。但要特别注意,有些函数并不是绝对安全的,使用这些函数时要特别小心。WString.h中有三个类,String,__ FlashStringHelper和StringSum

2016-02-15 21:13:48 2107 2

原创 Arduino代码机制-Arduino.h

本文介绍了Arduino.h头文件定义的宏和申明的函数。Aduino.h这个头文件做的事情非常多,定义了一些常数,还定义了一些“函数”,申明了一些常用函数。

2016-02-14 16:04:47 7874 4

原创 Arduino代码机制-引脚读写

在写arduino代码时,pinMode, digitalWrite, digitalRead这些函数用起来是不是非常顺手呢?有了这些函数,我们就不用关心AVR单片机的那些令人头疼寄存器了。我们向函数传入引脚在Arduino开发板上的引脚号,就能对这个引脚进行读写和设置操作了。这些函数是如何实现的呢?以上这三个函数,最终还是要通过设置PORT,PIN和DDR三个寄存器实现,要设置某个引脚,就必须知道

2016-02-13 20:48:14 13946 1

原创 Arduino代码机制-avr/pgmspace.h

与GNU-GCC不同的是,AVR-GCC含有pgmspace.h这个文件。单片机采用哈弗结构,将程序存储器和数据存储器分开,而数据存储器RAM通常比较小,而程序存储器Flash空间比较大,因此就需要将占用空间较大的不需要改变的数据放在Flash中。比如需要单片机支持LCD显示文字,就需要一个庞大的字体库,可达到几kb,这样打的数据量放在RAM中是不合适的,只能放在Flash中。pgmspace.h就

2016-02-13 00:05:05 8000

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除