Linux实验二 花样流水灯加时钟 C语言程序代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
head.S
.text
.global _start
_start:
b Reset
b HandleUndef
b HandleSWI
b HandlePrefethAbort
b HandleDataAbort
b HandleNotUsed
b HandleIRQ
b HandleFIQ Reset:
ldr sp, =4096
bl disable_watch_dog
bl clock_init
bl init_led
bl main HandleUndef:
b HandleUndef HandleSWI:
b HandleSWI HandlePrefethAbort:
b HandlePrefethAbort HandleDataAbort:
b HandleDataAbort HandleNotUsed:
b HandleNotUsed HandleIRQ:
b HandleIRQ HandleFIQ:
b HandleFIQ
halt_loop:
b halt_loop
init.c
#include"s3c24xx.h"
void disable_watch_dog(void);
void clock_init(void);
#define GPCCON (*(volatile unsigned long *)0x56000020) #define GSTATUS1 (*(volatile unsigned long *)0x560000B0)
void disable_watch_dog(void)
{
WTCON=0;
}
void clock_init(void)
{
CLKDIVN=0X30;
__asm__(
"mrc p15, 0, r1, c1, c0, 0\n"
"orr r1, r1, #0xc0000000\n"
"mcr p15, 0, r1, c1, c0, 0\n"
);
if((GSTA TUS1==0x32410000)||(GSTATUS1==0X341002))
{
MPLLCON = ((0X5C<<12)|(0X04<<4)|(0X00));
}
}
#define GPC5_out (1<<(5*2))
#define GPC6_out (1<<(6*2))
#define GPC7_out (1<<(7*2))
#define GPG11_eint (2<<(11*/2))
#define GPG3_EINT (2<<(3*2))
#define GPF3_EINT (2<<(3*2))
#define GPF2_EINT (2<<(2*2))
void init_led(void)
GPCCON=GPC5_out|GPC6_out|GPC7_out;
}
Makefile
mpll.bin:head.S mpll.c init.c
arm-linux-gcc -g -c -o head.o head.S
arm-linux-gcc -g -c -o mpll.o mpll.c
arm-linux-gcc -g -c -o init.o init.c
arm-linux-ld -Ttext 0x00000000 -g head.o mpll.o init.o -o mpll_elf
arm-linux-objcopy -O binary -S mpll_elf mpll.bin
clean:
rm -f mpll.bin mpll_elf *.o
pp:
cp -f *.bin /mnt/armshare/dx2_1/
mpll.c
#include"s3c24xx.h"
#define GPCDAT (*(volatile unsigned long *)0x56000024)
void delay(unsigned int xx)
{
while(xx--);
}
int main()
{
while(1)
{
GPCDA T=~(1<<5);
delay(50000);
GPCDA T=~(1<<6);
delay(50000);
GPCDA T=~(1<<7);
delay(50000);
}
}