打印
[S3C2440]

TQ2440 定时器中断无法触发

[复制链接]
1040|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zjqlovelyy|  楼主 | 2014-5-28 20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zjqlovelyy 于 2014-5-28 20:43 编辑

在程序里面,程序的功能是使得led以1s间隔闪烁,但是实际上这个程序没有进入到定时器的中断里面,调试的时候INTPND和SRCPND相应的位(第10位)已经置位了,INTMSK也清除相应的位了,而且内存中中断向量表timer0的位置也放了中断服务函数的地址。为什么会没有触发中断的?(补充下:我使用的是H-Jtag并口烧写的,到Nor flash中,位于bank0)


#include "2440addr.h"
#include "config.h"

void __irq timer0ISR(void);
void timer0Init(void);
void ledInit(void);

static int ledFlag=1;

void Main(void)
{
        
        ledInit();
        timer0Init();
        
        while(1)
        {
/*                if ( (rSRCPND & (1<<10)) == 1)
                {
                        ledFlag = !ledFlag;
                        rSRCPND = (1<<10);
                }*/
                if (ledFlag)
                {
                        rGPBDAT &= ~(1<<5);
                }
                else
                        rGPBDAT |= (1<<5);
        }
}

void ledInit(void)
{
        rGPBCON &= ~(3<<10);
        rGPBCON |= (1<<10);
        rGPBDAT &= ~(1<<5);
}

void timer0Init(void)
{
        pISR_TIMER0 = (unsigned int)timer0ISR;

        rSRCPND |= (1<<10);
        rINTPND |= (1<<10);
        rINTMSK &= ~(1<<10);

        rTCFG0 &= ~(0xff);
        rTCFG0 |= 99;
        
        rTCFG1 &= ~(0xf);
        rTCFG1 |= 2;
        
        rTCNTB0 = 62500;
        
        rTCON &= ~(0xf<<0);
        rTCON |= ((1<<0)|(1<<1)|(1<<3));
        rTCON &= ~(1<<1);
        
        
}

void __irq timer0ISR(void)
{
        ledFlag = !ledFlag;
        
        rSRCPND |= (1<<10);
        rINTPND |= (1<<10);
}

相关帖子

沙发
zjqlovelyy|  楼主 | 2014-5-28 20:58 | 只看该作者
我明白为什么了,需要在ledFlag前加volatile修饰,中断是进去了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

10

帖子

0

粉丝