用汇编点亮一个灯
led_on.s //a先配置功能GPFCON[8,9], b设置输入输出电平GPFDAT[4] = 0
.text
.global _start
_start :
ldr R0 , =0x5600 0050 @R0设置为 GPFCON寄存器 ,
@ 他作为端口各引脚功能 ::: 作为 输入 输出 和其他
mov R1 , #0x0000 0100
STR R1 , [R0]
l dr R0 , =0x5600 0054
mov R1 , #0x0000 0000
STR R1 , [R0]
MAIN_LOOP :
B MAIN_LOOP
shu
用C点亮一个灯
<需要启动文件:分为软起,硬起
<软起:::>>调用main;设置main的返回地址;清理功能;设置堆栈(sp->指向某块内存,片内sram直接用,若为片外SDRAM 要初始化 )
<硬起::::::::::>>>>>1.关闭看门狗(一个定时器,若3秒没有人关闭它,会重启系统)
2.初始化时钟(最快400Mhz 启动时12MHZ) 2.5ns~~~83ns )初始化SDRAM
led_on.s
@******************************************************************
@File : led_on.s
@功能:通过它转入C程序
@*****************************************************************
.text
.global _start
_start :
ldr r0 ,=0x5800000mov r1,#0x00000000 @关闭看门狗
str r1 , [r0]
ldr sp , =1024*4 @设置堆栈,不可大于4Kb
. b1 main @ ba把返回地址存入寄存器,然后跳转执行main()
halt_loop:
b balt_loop
led_on_c.c
#define GPFCON (*(volatile unsiged long *)0x56000 0000)
#define GPFDAT (*(volatile unsiged long *)0x56000 0054)
int main()
{
GPFCON = 0x0000 0100; //设置GPF4为为输出口,位【8:7】 = 0b01
GPFDAT = 0x0000 0000; /CPF4输出0,led点亮
return 0;
}
4.按键控制灯
1>看原图 @@
2>真么做?? >>>>>a.判断KEY @@配置key为输入,led输出
>>>>>b.点亮灯 @@读key引脚,设置led引脚
GPFDAT
dwDAt = GPFDAT;
if(dwDAT&(1<<3))
GPFDAT | = (1<<6) //设置位【6】为1,灭灯
else
GPFDAT & =~(1<<6)