1. 关于C言语中数据类型的长度问题
咱们应该比较了解51系列的C言语数据类型的长度,如下表所示:
数据类型 |
长 度 |
值 域 |
unsigned char |
单字节 |
0~255 |
signed char |
单字节 |
-128~+127 |
unsigned int |
双字节 |
0~65535 |
signed int |
双字节 |
-32768~+32767 |
unsigned long |
四字节 |
0~4294967295 |
signed long |
四字节 |
-2147483648~+2147483647 |
float |
四字节 |
关于ARM的C言语数据类型的长度,如下表:
类型 |
数据宽度/bytes |
char |
1 |
unsigned char |
1 |
short |
2 |
unsigned short |
2 |
int |
4 |
unsigned int |
4 |
long |
4 |
unsigned long |
4 |
2. 关于位变量的界说
榜首:假如只单纯的运用位变量,只需求增加#include
第二:可是上面的这种办法有一种不可取的当地,假如需求对很多位变量一起赋同一个值的时分,需求书写多条句子,这个时分就能够运用下面的这种办法,这儿支撑32bit,16 bit,8bit一起界说。
volatile union { INT8U Flag; __BITS8 Flag_bit; } ;
#define FlagBit0 Flag_bit.no0
#define FlagBit1 Flag_bit.no1
#define FlagBit2 Flag_bit.no2
#define FlagBit3 Flag_bit.no3
#define FlagBit4 Flag_bit.no4
#define FlagBit5 Flag_bit.no5
#define FlagBit6 Flag_bit.no6
#define FlagBit7 Flag_bit.no7
第三:对寄存器的位操作举例,在iolpc2103.h的头文件中,你能够发现如下的界说:
typedef struct{
__REG32 MR0INT : 1;
__REG32 MR1INT : 1;
__REG32 MR2INT : 1;
__REG32 MR3INT : 1;
__REG32 CR0INT : 1;
__REG32 CR1INT : 1;
__REG32 CR2INT : 1;
__REG32 :25;
} __ir0_bits;
__IO_REG32_BIT(T0IR, 0xE0004000,__READ_WRITE,__ir0_bits);
由上面的界说,能够看出寄存器的位操作能够这样写T0IR_bit.MR0INT,一起咱们也能够再次从头界说一下这个位变量,这样更利于咱们的运用。
#define ClrMR0Timer0Int() T0IR_bit.MR0INT = 1
3. 关于开关总中止的内部函数
在IAR中,关总中止和开总中止,有专用的函数能够调用,仅仅需求包括#include
__disable_interrupt();
__enable_interrupt();
4. 关于IAR中头文件的写法
在IAR本来的版别中,包括iolpc2103.h 文件能够这样写:
#include
可是我所运用的这个最新的版别V6.1,却不能这么写,这样会找不到这个头文件,这个版别需求依照下面的这种办法写(当然应该你人为改动iolpc2103.h 文件文件的方位也是能够的):
#include
另假如需求将自己的头文件都放入一个固定的文件夹中,便于管理的话,你需求将你自己界说的头文件写成下面这个姿态:
#include”..Headconfig.h”