利用proteus學(xué)習(xí)ARM(LPC2103)之二:熟悉IAR C語言開發(fā)環(huán)境
我們應(yīng)該比較熟悉51系列的C語言數(shù)據(jù)類型的長度,如下表所示:
本文引用地址:http://www.ex-cimer.com/article/201611/321519.htm數(shù)據(jù)類型 | 長 度 | 值 域 |
unsigned char | 單字節(jié) | 0~255 |
signed char | 單字節(jié) | -128~+127 |
unsigned int | 雙字節(jié) | 0~65535 |
signed int | 雙字節(jié) | -32768~+32767 |
unsigned long | 四字節(jié) | 0~4294967295 |
signed long | 四字節(jié) | -2147483648~+2147483647 |
float | 四字節(jié) |
關(guān)于ARM的C語言數(shù)據(jù)類型的長度,如下表:
類型 | 數(shù)據(jù)寬度/bytes |
char | 1 |
unsigned char | 1 |
short | 2 |
unsigned short | 2 |
int | 4 |
unsigned int | 4 |
long | 4 |
unsigned long | 4 |
2. 關(guān)于位變量的定義
第一:如果只單純的使用位變量,只需要添加#include
第二:但是上面的這種方法有一種不可取的地方,如果需要對(duì)很多位變量同時(shí)賦同一個(gè)值的時(shí)候,需要書寫多條語句,這個(gè)時(shí)候就可以使用下面的這種方法,這里支持32bit,16 bit,8bit同時(shí)定義。
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
第三:對(duì)寄存器的位操作舉例,在iolpc2103.h的頭文件中,你可以發(fā)現(xiàn)如下的定義:
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,同時(shí)我們也可以再次重新定義一下這個(gè)位變量,這樣更利于我們的使用。
#define ClrMR0Timer0Int() T0IR_bit.MR0INT = 1
3. 關(guān)于開關(guān)總中斷的內(nèi)部函數(shù)
在IAR中,關(guān)總中斷和開總中斷,有專用的函數(shù)可以調(diào)用,只是需要包含#include
__disable_interrupt();
__enable_interrupt();
4. 關(guān)于IAR中頭文件的寫法
在IAR原來的版本中,包含iolpc2103.h 文件可以這樣寫:
#include
但是我所使用的這個(gè)最新的版本V6.1,卻不能這么寫,這樣會(huì)找不到這個(gè)頭文件,這個(gè)版本需要按照下面的這種方法寫(當(dāng)然應(yīng)該你人為改變iolpc2103.h 文件文件的位置也是可以的):
#include
另如果需要將自己的頭文件都放入一個(gè)固定的文件夾中,便于管理的話,你需要將你自己定義的頭文件寫成下面這個(gè)樣子:
#include"..Headconfig.h"
評(píng)論