OK6410 GPIO 控制LED 亮灭代码

init.s 如下:


;程序源码
;IMPORT Main
;AREA|C$$code|, CODE,READONLY 
; global start

;start


; bl Main
;END




; 网上源码
; 注意这里指令前面不要顶格写,否则编译通过不了(IMPORT AREA 是指令?),还有就说这个init.s文件不是必须
;的,有这个文件主要是为了在执行时候的入口地址是不变的,如果只有led_test.c,那么在
;指令执行的入口地址会根据是否修改led_test.c的内容进行变化


;IMPORT Main
      IMPORT Main
      AREA init,CODE,READONLY
ENTRY
      bl Main
      END



main.c 如下:

/*
* kan 2012/7/29  OK6410 LED test
*/


#define rGPMCON (*(volatile unsigned *)(0x7F008820))
#define rGPMDAT (*(volatile unsigned *)(0x7F008824))
#define rGPMPUD (*(volatile unsigned *)(0x7F008828))


void msDelay(int time)
{
volatile unsigned int i, j;

for( i = 0; i < 2000000; i++)
for( j = 0; j < time; j++)
;
}


void GPIO_Init(void)
{
rGPMCON = 0x11111;
rGPMPUD = 0x00;
rGPMDAT = 0x1F;
}


void LedTest(void)
{
volatile unsigned int i;
while(1)
{
for( i = 0; i < 4; i++)
{
rGPMDAT = ~(1<msDelay(10);
}
}
}


void Main(void)
{
GPIO_Init();
LedTest();
}



你可能感兴趣的:(ARM/OK6410,import,c)