搜索
bottom↓
回复: 2

s3c44b0 定时器中断问题 请教

[复制链接]

出0入0汤圆

发表于 2011-3-1 16:02:07 | 显示全部楼层 |阅读模式
#include "option.h"
#include "def.h"
#include "44b.h"
#include "44blib.h"

static U32 TimerCnt=0;
static int LedStatus=0;

void __irq Timer_Tick(void)
{       
    rI_ISPC=BIT_TIMER3;
   
    if(TimerCnt++ == 10) {
                TimerCnt=0;
                Led_Display(LedStatus);
                LedStatus=(~(LedStatus)&0x7);
                Uart_Printf("\nTIMER interrupt... ");
    }

}
void Timer_Init(void)
{
/*       
*        Timer Clock Frequency = MCLK/pre/mux
*/       
    rTCFG0=0x00000f00;        //dead zone=0,pre2=0,pre1=0xf,pre0=0
    rTCFG1=0x00001000;        //all interrupt,mux5=1/2,mux2=1/2,mux3=1/4,mux2=1/2,mux1=1/2,mux0=1/2
   
    rTCNTB3=0xc350;                //(1/(60MHz/4/15))*0xc350=50ms
                                            //(1/(60MHz/4/15))*0x4320=20ms
    rTCMPB3=0x0;

    rTCON=0x0020000;        //update T3
    rTCON=0x0090000;        //T3=auto reload,start       
   
    rINTCON=0x5;    //Non-vectored,IRQ enable,FIQ disable
    rINTMOD=0x0;    //All=IRQ mode
   
    pISR_TIMER3=(unsigned)Timer_Tick;
    rINTMSK=BIT_GLOBAL;
    rINTMSK=~(BIT_GLOBAL|BIT_TIMER3);        //start timer INT
}

void Main(void)
{
    rSYSCFG=CACHECFG;   // Using 8KB Cache//

    Port_Init();
    Uart_Init(0,57600);
    Delay(10);
    Uart_Select(0); //Select UART0
    Led_Display(0x07);
   
    Uart_Printf("\nFS44B0X TIMER ");
    Uart_Printf("\n定时器中断DEMO");
   
    while(1)
    Timer_Init();
    //while(1);
}
中断进不了,不知道什么问题,麻烦大侠们解决下,谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2011-3-1 16:24:15 | 显示全部楼层
允许IRQ中断没有?记得开总中断

出0入0汤圆

 楼主| 发表于 2011-3-2 09:35:05 | 显示全部楼层
我自己解决好了  传个可以用的程序
#include "option.h"
#include "def.h"
#include "44b.h"
#include "44blib.h"

static U32 TimerCnt=0;
static int LedStatus=0;

void __irq Timer_Tick(void)
{       
    rI_ISPC=BIT_TIMER0;
   
    TimerCnt++;
   if(TimerCnt>19) {
                TimerCnt=0;
                Led_Display(LedStatus);
                LedStatus=(~(LedStatus)&0x7);
                //Uart_Printf("\nTIMER interrupt... ");
    }
    else ;
   return ;

}
void Timer_Init(void)
{
/*       
*        Timer Clock Frequency = MCLK/pre/mux
*/ rINTCON=0x5;    //Non-vectored,IRQ enable,FIQ disable
    rINTMOD=0x0;    //All=IRQ mode
        rINTMSK=~(BIT_GLOBAL|BIT_TIMER0);//start timer INT
        pISR_TIMER0=(U32)Timer_Tick;
    rTCFG0=0x0000000f;        //dead zone=0,pre2=0,pre1=0xf,pre0=0
    rTCFG1=0x00000001;        //all interrupt,mux5=1/2,mux4=1/2,mux3=1/4,mux2=1/2,mux1=1/2,mux0=1/2
   
    rTCNTB0=0xc350;                //(1/(60MHz/4/15))*0xc350=50ms
                                            //(1/(60MHz/4/15))*0x4320=20ms
    rTCMPB0=0x0;

    rTCON=0x0000003;        //update T0
    rTCON=0x0000009;//0x00B0000;        //T3=auto reload,start       
   
   
     //rTCON=0x00;       
   //  while(1);
  //  rINTMSK=BIT_GLOBAL;
   
}

void Main(void)
{
    rSYSCFG=CACHECFG;   // Using 8KB Cache//

    Port_Init();
   // Uart_Init(0,57600);
    Delay(10);
//   Uart_Select(0); //Select UART0
    Led_Display(1);
   
  //  Uart_Printf("\nFS44B0X TIMER ");
  //  Uart_Printf("\n定时器中断DEMO");
   
   
   
            Timer_Init();
   
    while(1);
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表