您的位置:首页 > 编程语言 > C语言/C++

点led灯(进阶)——c语言

2014-04-05 18:51 197 查看


.globl _start

_start:

/* 硬件相关的设置 */

/* Peri port setup */

ldr r0, =0x70000000

orr r0, r0, #0x13

mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff)

/* 关看门狗 */

/* 往WTCON(0x7E004000)写0 */

ldr r0, =0x7E004000

mov r1, #0

str r1, [r0]

/* 设置栈 */

ldr sp, =8*1024 //c函数中的局部变量和返回地址都保存在栈里边,注意:程序大小小于8k才可以,否则需用到DDR



bl XXXX //调用XXXX函数

halt:

b halt

/***********c函数**************/

void delay()

{

volatile int i = 0x10000;

while (i--);

}

int XXXX()

{

int i = 0;

volatile unsigned long *gpmcon = (volatile unsigned long *)0x7F008820;

volatile unsigned long *gpmdat = (volatile unsigned long *)0x7F008824;


—优化—>



//加入volatile,防止被优化

/* gpm0,1,2,3设为输出引脚 */

*gpmcon = 0x1111;



while (1)

{

*gpmdat = i;

i++;

if (i == 16)

i = 0;

delay();

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: