主题 : 为什么按键中断实例中的程序编译后下载到开发板中中断函数不执行 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 32805
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2010-11-21
最后登录: 2011-01-04
楼主  发表于: 2010-12-27 21:29

 为什么按键中断实例中的程序编译后下载到开发板中中断函数不执行

以下是买来的资料中的源程序:

#define    GLOBAL_CLK        1
#include <stdlib.h>
#include <string.h>
#include "def.h"
#include "option.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "mmu.h"
#include "profile.h"
#include "memtest.h"
void key_init(void);
static void __irq key_handler(void);

/*************************************************
延时函数
**************************************************/
void delay(int times)
{
    int i,j;
    for(i=0;i<times;i++)
       for(j=0;j<400;j++);
}

/*************************************************
LED初始化
**************************************************/
void Led1_init(void)
{
   rGPBCON &= ~(3<<10);
   rGPBCON |= (1<<10);
rGPBDAT &=~(1<<5);
}

/*************************************************
点亮LED
**************************************************/
void Led1_run(void)
{


rGPBDAT |=(1<<5);
   delay(1000);

}

/*************************************************
主函数
**************************************************/
void Main(void)
{    
  
   Led1_init();
  
   key_init();
  
   while(1);
}    

/*************************************************
按键初始化
**************************************************/
void key_init(void)
{
    rGPGCON &= ~(0x3<<0);    
    rGPGCON |=  (0x2<<0);
    
    rEXTINT1 &= ~(0xf<<0);  
    rEINTPEND |= (1<<8);
    rEINTMASK &= ~(1<<8);
    
    /*设置ISR*/
    pISR_EINT8_23=(U32)key_handler;
    EnableIrq(BIT_EINT8_23);
}    

/*************************************************
按键中断处理函数
**************************************************/
static void __irq key_handler(void)
{
    /*判断是否是按键K1产生的中断*/
    if(rINTPND==BIT_EINT8_23)
    {
    ClearPending(BIT_EINT8_23);
    
    if(rEINTPEND&(1<<8))
        rEINTPEND |= 1<< 8;
        
    Led1_run();
    //temp=(!temp);
    }
}


为了验证中断函数没有执行还是整个主函数没有执行,我特意只对led显示函数做了一点点小变化,即是初始化时那个灯是亮的,按键按下后外部中中断发生,led灯熄灭,但是经过验证的结果是主函数执行了,等也亮了,只是当按键按下的时候等不不灭,先声明一下通过前面的那个按键的延时检测程序测试按键是好的
不知道中断函数的设置和编写是否有错,希望能够认真解答一下,后面的实例基本上都要用到中断,谢谢
不知道中断设置那几个函数有错没
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2010-12-28 11:32
我们不对程序原理提供解释服务,抱歉
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.