mini2440 定时器实验

2019-07-13 03:43发布

所用开发板: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 }