码迷,mamicode.com
首页 > 其他好文 > 详细

Arduino基本数据类型

时间:2017-10-15 21:28:48      阅读:2165      评论:0      收藏:0      [点我收藏+]

标签:目的   原因   pre   很多   end   nbsp   开发   style   false   

简介

常见的Arduino是基于ATmega的8位 AVR单片机,例如Arduino UNO ,Arduino mega2560。还有高级点 32位的,如Due等。
基本数据类型差别是:int和double在这个2平台大小不一样。
 
Arduino 168有1KB的SRAM,328有2KB的SRAM,Mega 2560有8KB的SRAM。都不是很多。因此,在编程时,尽量选择占用内存小的数据类型。
 
 
类型
大小,即字节数
范围
说明
char
 
signed  char             
 
unsigned char
1
-128 ~127
 
-128 ~127
 
0~255
Arduino中的char是有符号的,等价于signedchar。范围是-128 ~127 。
char目的是用于储存ASCII字符。如果你想存储字节数据,建议使用byte来明确代码。
byte
1
0~255
 
byte不是C/C++标准类型,他是Arduino平台下特有的,实际就是无符号8位类型。
 
 
Arduino.h中,有这样的类型定义:
typedef uint8_t byte;
int 
unsigned int
2
 
(或者4)
-32768-32767  
(2字节有符号)
 
0~65535    
(2字节无符号)
 
 
在基于ATMega的8位单片机中,如Arduino UNO,Ardunio Mega2560,int是2字节的.
 
而在有些高级Arduino板,如Arduino Due,SAMD等中,int占4字节。
long 
 
 
unsigned long
4
-2147483648 ~ 2147483647
 
0 ~ 4294967295
长整型常量末尾要用L标识出来。
如:long num  = 29596725L;
 
float
4
-3.4028235E+38 to 3.4028235E+38
 
 \
double
4
 
(或者8)
-3.4028235E+38 to 3.4028235E+38
在基于ATMega的8位单片机中,如Arduino UNO,Ardunio Mega2560,double和float没有差别,都是4字节的.
 
 
而在Due,等高级板中,占8字节。
bool
1
true 、 false
实质就是C++中的bool类型,你也可以使用boolean,因为在Arduino.h中,有这样的类型定义:
typedef bool boolean;
 
 

二进制常量

Arduino.h中包含了一个头文件 "binary.h" ,如下。因此,我们要在程序中显式的使用0~255范围内的二进制常量,则可以写成 以B开头的格式。
 
#ifndef Binary_h
#define Binary_h

#define B0 0
#define B00 0
#define B000 0
#define B0000 0
#define B00000 0
#define B000000 0
#define B0000000 0
#define B00000000 0
#define B1 1
#define B01 1
#define B001 1
#define B0001 1
#define B00001 1
#define B000001 1
#define B0000001 1
#define B00000001 1
#define B10 2
#define B010 2
#define B0010 2
#define B00010 2
#define B000010 2
#define B0000010 2
#define B00000010 2
#define B11 3
#define B011 3
#define B0011 3
#define B00011 3
#define B000011 3
#define B0000011 3
#define B00000011 3
#define B100 4
#define B0100 4
#define B00100 4
#define B000100 4
#define B0000100 4
#define B00000100 4
#define B101 5
#define B0101 5
#define B00101 5
#define B000101 5
#define B0000101 5
#define B00000101 5
#define B110 6
#define B0110 6
#define B00110 6
#define B000110 6
#define B0000110 6
#define B00000110 6
#define B111 7
#define B0111 7
#define B00111 7
#define B000111 7
#define B0000111 7
#define B00000111 7
#define B1000 8
#define B01000 8
#define B001000 8
#define B0001000 8
#define B00001000 8
#define B1001 9
#define B01001 9
#define B001001 9
#define B0001001 9
#define B00001001 9
#define B1010 10
#define B01010 10
#define B001010 10
#define B0001010 10
#define B00001010 10
/*.......篇幅原因,省去........*/
#define B11111110 254
#define B11111111 255

#endif

 

包含类型大小信息的整数类型

有些做过硬件开发的人会使用类似于  int8_t  、int16_t 等形式的类型,特点是类型本身包含了类型的大小,让代码更具有移植性。在Arduino中也可以使用。
需要包含头文件 #include<inttypes.h >
/*********************整数类型************************/

typedef signed char int8_t;   //8bit有符号类型
typedef unsigned char uint8_t; // 8bit无符号类型


typedef signed int int16_t; //16bit有符号类型
typedef unsigned int uint16_t;//16bit有符号类型


typedef signed long int int32_t;   //328bit有符号类型
typedef unsigned long int uint32_t;  //32bit有符号类型


typedef signed long long int int64_t;   //32bit有符号类型.可能无法使用
typedef unsigned long long int uint64_t;     //32bit有符号类型,可能无法使用




/***************保存地址值的类型****************/


typedef int16_t intptr_t;     //保存地址值的类型,有符号

typedef uint16_t uintptr_t;  //保存地址值的类型,无符号


//远地址类型,用于单片机SRAM大于64K(地址编号为0~65535 )的情况,用intptr_t可能会溢出。

typedef uint32_t   uint_farptr_t;
typedef int32_t    int_farptr_t;   


/***********宏符号常量,保存了各种类型的最大,最小值**********/

INT8_MAX     INT8_MIN

UINT_MAX     


INT16_MAX    INT16_MIN

UINT16_MAX

INT32_MAX INT32_MIN UINT32_MAX

 

 

Arduino基本数据类型

标签:目的   原因   pre   很多   end   nbsp   开发   style   false   

原文地址:http://www.cnblogs.com/lulipro/p/7672954.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!