arm定时器0

board/timer0_beep.c

#include "stdio.h"
#include "s5pv210.h"
#define rTCNTB0  (*(volatile unsigned long *) 0xE250000C)
#define rTCMPB0  (*(volatile unsigned long *) 0xE2500010)
void t0_PortInit()
{
	//GPD0CON[3:0] = 0010 
	rGPD0CON &=~(0x2<<0);
	rGPD0CON |=(0x2<<0);
}

void t0_Init()
{
	//TCFG0[7:0] = 99 
	rTCFG0 &=~(0xff<<0);
	rTCFG0 |=(0x63<<0);
	//TCFG1[3:0] = 0100
  rTCFG1 &=~(0xf<<0);
	rTCFG1 |=(0x4<<0);
	//TCNTB0[] = 4125
	rTCNTB0=41250;
	//TCMPB0[] = TCNTB0/2
	rTCMPB0=rTCNTB0/2;
	

	//TCON[1] = 1;
	rTCON |=(0x1<<1);
	
	

	//TCON[1] = 0;
	rTCON &=~(0x1<<1);
	
	//TCON[3] = 1;		//auto reload
	rTCON |=(0x1<<3);
}


void timer0_onoff()
{
	//TCON[0] = 1;
	rTCON |=(0x1<<0);
}

int timer0_beep()
{
	t0_PortInit();
	t0_Init();
	timer0_onoff();
	return 0;
	//while(1);
}
cpu/board.c

#include "stdio.h"
#include "api.h"

int start_armboot()
{
	printf(">>>>> welcome to c <<<<<<<\n");
	 timer0_beep();
	return 0;
}
cpu/start.S

.text 
.extern uart_init			
.extern printf
.extern start_armboot
.global _start
_start:
	mov r5,lr 
	
	bl uart_init
	ldr r0,=fmt
	bl printf
	bl start_armboot
	mov lr,r5<pre name="code" class="plain">

 makefile 

<pre name="code" class="plain">CC = arm-linux-gcc
LD = arm-linux-ld 
OBJCOPY = arm-linux-objcopy 

INCLUDEDIR := $(shell pwd)/include/
CPPFLAGS := -nostdinc -nostdlib -I$(INCLUDEDIR)
CFLAGS := -fno-builtin -Wall -O2 

export CC LD OBJCOPY CPPFLAGS CFLAGS 

OBJS := cpu/start.o cpu/board.o board/timer0_beep.o lib/uart.o lib/libc.a 

all:start.bin clean

start.bin:$(OBJS)
	$(LD) -Ttext=0x40000000 $(OBJS) -o start.elf
	$(OBJCOPY) -O binary -S start.elf $@

%.o:%.S
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
%.o:%.c
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
clean:
	rm -rf ./start.elf
	make clean -C cpu
	make clean -C board

bx lr fmt:.asciz ">>>>> welcome to arm <<<<<<<\n".end

 说明: 

这里不需要用到中断,定时器0会有输出到蜂鸣器那控制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值