新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用proteus學(xué)習(xí)ARM(LPC2103)之二:熟悉IAR C語言開發(fā)環(huán)境

        利用proteus學(xué)習(xí)ARM(LPC2103)之二:熟悉IAR C語言開發(fā)環(huán)境

        作者: 時(shí)間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
        1. 關(guān)于C語言中數(shù)據(jù)類型的長度問題

        我們應(yīng)該比較熟悉51系列的C語言數(shù)據(jù)類型的長度,如下表所示:

        本文引用地址:http://www.104case.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,然后就可以使用bool進(jìn)行定義;

        第二:但是上面的這種方法有一種不可取的地方,如果需要對(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就可以直接調(diào)用下面的語句:

        __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)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 南涧| 茂名市| 金昌市| 汉阴县| 抚松县| 宜宾县| 临高县| 武宁县| 双牌县| 特克斯县| 华阴市| 长春市| 东阳市| 横峰县| 宁安市| 桓台县| 绥中县| 灵丘县| 乳源| 铜梁县| 吴川市| 故城县| 宜章县| 武平县| 板桥市| 马边| 浦城县| 大埔区| 巴马| 宜城市| 迁安市| 弋阳县| 平塘县| 阳泉市| 长丰县| 太湖县| 武平县| 嵊泗县| 广昌县| 海盐县| 昌乐县|