新闻  |   论坛  |   博客  |   在线研讨会
arm9开发2-定时器
mayer | 2009-07-15 18:58:58    阅读:1640   发布文章

arm9开发2-定时器

 

又是这样,先忙一个晚上,没有结果,但在第二天很快就把事情搞定了。终于啊,定时器的定时方法弄完了,但在RAM中运行的方法还没弄明白。

下面是源码,有注释,我就不说废话了。但自己觉得重点有:

1、  时钟的设置。

2、  定时器的设置。

3、  中断的用法,主要是中断向量的赋值方法。要看看启动代码,弄明白了那个对以后的学习肯定是大有好处的。

注:不改动的话是用了中断,把中断禁止,再把注释掉的恢复就是查询的用法了。

 

#include "def.h"

#include "2440addr.h"

 

U32 j;

 

void __irq ISR_timer4(void)

{       

         rSRCPND |= 0x00004000;

         rINTPND |= 0x00004000;

         rGPBDAT = 0x01f<<j++;

         if (j>9)

                   j = 5;

}       

 

void Main(void)

{

         U32 i;

         j = 5;

 

//init clock       

         rCLKCON = 0x02110;       //enable clk for timer,pwm and port

         rUPLLCON = 0x00038022;   //UPLL = 96Mhz

         rMPLLCON = 0x00078012;   //MPLL = 256Mhz

         rCLKDIVN = 0X0b;         //HCLK = FCLK/2 = 128Mhz

                                                      //PCLK = HCLK/2 = 64Mhz

                                                      //UCLK = UPLL/2 = 48Mhz

//flag of start                                               

         rGPBCON = 0x155555;      //PORTB5-8 for output

         rGPBUP  = 0x03ff;        //PORTB5-8 pull_up disable

    rGPBDAT = 0x80;

    for(i=0;i<500000;i++)

    ;

    rGPBDAT = 0x01e0;

    for(i=0;i<500000;i++)

    ;

 

//init timer4

         pISR_TIMER4 = (unsigned)ISR_timer4;

        

         rINTMSK ^= 0x00004000;    //intmask_timer4 = 1;

         rTCFG0 = 0x0000C700;     //pre_CLK = PCLK/200 = 320Khz

         rTCFG1 = 0x00030000;     //MUX_CLK = pre_CLK/16 = 20Khz

    rTCNTB4 = 20000;          //f_INT_timer4 = MUX_CLK/20000 = 1hz

        rTCON  = 0x00200000;//timer4:EN_UPDATE  

    rTCON  = 0x00500000;//timer4 start,DIS_UPDATE

   

     for (;;)

         {

/*

                   if (rSRCPND & 0x00004000)

                 {

                            rSRCPND |= 0x00004000;

                            rGPBDAT = 0x0ef<<j++;

                            if (j>9)

                                     j = 5;

                   }

*/

         }

}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客