標(biāo)題: ARM 流水燈C語言 [打印本頁]

作者: hongniu    時間: 2015-6-26 23:05
標(biāo)題: ARM 流水燈C語言
#include"2440addr.h"    //定義了各個特殊功能寄存器地址和名稱,要使用必須調(diào)用該頭文件
/*=== 如果不調(diào)用該頭文件,必須把要使用的定義名稱和地址語句在主程序前聲明
#define rGPBCON    (*(volatile unsigned *)0x56000010)//Port B control
#define rGPBDAT    (*(volatile unsigned *)0x56000014)//Port B data
#define rGPBUP     (*(volatile unsigned *)0x56000018)//Pull-up control */   
/*  自定義簡單延遲程序  */
int delay(int times)
{
    int i;
    for(i=0;i<times;i++);
    return 0;
}

/*  主程序  */
void xmain(void)     //主函數(shù)名稱與主函數(shù)入口地址對應(yīng),在2440init.s中有定義
{                    //不能隨意寫成main,或者Main等,要查看在2440init.s文件(見下圖)


        rGPBCON |=0x3fc00;                 //GPB5-8  able output
        rGPBCON &=0x15400;              //GPBCON兩位管理GPBDAT的方向(見下面對應(yīng)關(guān)系,00-in,01-out, 10-other,11-無用);
         // 方向控制GPBCON            d21d20    d19d18 d17d16   d15d14d13d12   d11d10 d9d8   d7d6  d5d4   d3d2  d1d0
         // 輸入輸出sfr GPDAT            d10            d9         d8           d7        d6           d5       d4        d3      d2       d1      d0   
        rGPBUP  |=0x1e0;                     //disable GPB5-8 pull up res,GPBUP一位管一位,0-鏈接上拉電阻,1-關(guān)閉上拉電祖



while(1)
    {

             rGPBDAT|=0x1e0;//GPB7 output 0
             rGPBDAT&=0xeff;      
             delay(50000000);//調(diào)用匯編語言編寫的延時程序

             rGPBDAT|=0x1e0;//GPB7 output 0
             rGPBDAT&=0xf7f;      
             delay(50000000);//調(diào)用匯編語言編寫的延時程序


             rGPBDAT|=0x1e0;//GPB7 output 0
             rGPBDAT&=0xfbf;      
             delay(50000000);//調(diào)用匯編語言編寫的延時程序

             rGPBDAT|=0x1e0;//GPB7 output 0
             rGPBDAT&=0xfdf;      
             delay(50000000);//調(diào)用匯編語言編寫的延時程序


    }
}



下圖是不調(diào)用相關(guān)文件,但使用的sfr必須定義


下圖是不定義sfr,但必須使用頭文件2440addr.h,由于頭文件2440addr.h中的設(shè)置在Def.h和Option.h中進行了設(shè)置,所以,調(diào)用2440addr.h必須調(diào)用后兩者。否則編譯出錯!











歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1