mini2440 定时器实验

所用开发板:mini2440(友善之壁)

程序功能:利用定时器0,每0.5秒产生一次中断(中断处理程序是控制led1闪烁)。

                  在我自己的板子上烧写并运行成功。

源码:timer.tar.bz2

上面代码中设置的FCLK为399.65MHZ,不是精确的400MHZ,请大家注意)感兴趣的朋友可以借助韦东山的《嵌入式Linux应用开发完全手册》第十章内容来理解。

比较重要的代码应该是设置FCLK 、HCLK 、PCLK和定时器0。

这个实验一次性完成(自己敲的),成功的原因主要是做到了思路清晰,编码认真,并且每一行代码都不是简单的复制,而是自己认真想明白才写上的。加油!


void clock_init()
{
	//LOCKTIME IS DEFAULT 0XFFFFFFFF
	CLKDIVN = 0X1;	//F:H:P=1:1:2 HDIVN=0 PDIVN=1
	MPLLCON = (0X6E<<12) | (0X3<<4) | (0X1); //F:400M H:400M P:200M
}

void timer0_init()
{//P:200M,  P/(199+1)/16=62500HZ
	TCFG0 = 199; //预分频器0 = 199
	TCFG1 = 0X3; //16分频
	TCNTB0 = 31250; //0.5s触发一次中断
	TCON |= (1<<1); //第一次,手动更新
	TCON = 0X09;    //取消手动更新,设为自动更新,启动timer0
}

你可能感兴趣的:(mini2440 定时器实验)