文章目录
目标
1、按开发板上3键任何一个,都会点亮相应LED灯3秒
2、若将键按相应LED灯亮3秒作为一轮操作,不管这一轮操作有否结束,都能接受下一轮的操作
开发环境
目标板:JZ2440
交叉编译工具:arm-linux-gcc
步骤
1.调用定时器中断
interrupt.h:
unsigned int timer_count;//定时器计数
void Timer0_Handle(void);//定时器0中断服务函数
int get_timer_count(void);//获取定时器计数
中断服务函数:
void Timer0_Handle(void)
{
if(INTOFFSET == 10)
{
timer_count++;
}
//清中断
SRCPND = 1 << INTOFFSET;
INTPND = INTPND;
}
init.c:
void disable_watch_dog(void);//关闭WATCHDOG
void clock_init(void);//系统时钟初始化
void init_led(void);//LED初始化
void timer0_init(void);//TIME0初始化
void init_irq(void);//定时器0中断使能
定时器TIME0设置:
/*
* Timer input clock Frequency = PCLK / {prescaler value+1} / {divider value}
* {prescaler value} = 0~255
* {divider value} = 2, 4, 8, 16
* 本实验的Timer0的时钟频率=100MHz/(99+1)/(16)=62500Hz
* 设置Timer0 1秒钟触发一次中断:
*/
void timer0_init(void)//定时器初始化
{
TCFG0 = 99