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
}
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮