打印
[ZLG-ARM]

关于ZLG2200中断问题

[复制链接]
1372|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
houn|  楼主 | 2008-4-20 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我使用的ZLG2200开发板(SMART 2200),在做周立功SmartArm7ARM嵌入式系统实验教程(二)中2.14_外部中断实验1,按照书中代码做完源程序,调试发现不能响应中断,我第一次,我不知道为什么,请大家帮帮我,帮我看看是什么原因
代码是书中:
#include "config.h"
#define      BEEPCON    1<<7                // P0.7引脚控制B1,低电平蜂鸣,1<<7 等价于 0x80

/****************************************************************************
* 名    称:IRQ_Eint3()
* 功    能:外部中断EINT3服务函数,取反B1控制口。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void   __irq IRQ_Eint3(void)
{  
    uint32  i;
   
    i = IO0SET;                            // 读取当前B1控制值
    if( (i&BEEPCON)==0 )                // 控制B1输出取反
    {  
        IO0SET = BEEPCON;
    }
    else
    {  
        IO0CLR = BEEPCON;
    }
   
    /* 等待外部中断信号恢复为高电平(若信号保持为低电平,中断标志会一直置位) */
    while( (EXTINT&1<<3)!=0 )    
    {  
        EXTINT = 1<<3;                    // 清除EINT3中断标志,1<<3 等价于 0x08
    }
   
    VICVectAddr = 0;                    // 向量中断结束
}        
            

/****************************************************************************
* 名    称:main()
* 功    能:初始化外部中断3(EINT3)为非向量中断,并设置为电平触发模式,然后等待外部中断。
* 说    明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。
****************************************************************************/
int  main(void)
{  
    PINSEL1 = 3<<8;                        // 设置管脚连接,P0.20设置为EINT3
                                        // 3<<8 等价于 0x00000180
                                
    IO0DIR = BEEPCON;                    // 设置B1控制口为输出,其它I/O为输入
       IO0CLR = BEEPCON; 
    EXTMODE = 0x00;                        // 设置EINT3中断为电平触发模式
                                    
    /* 打开EINT3中断(使用非向量IRQ) */
    VICIntSelect = 0x00000000;            // 设置所有中断分配为IRQ中断
    VICDefVectAddr = (int32)IRQ_Eint3;        // 设置中断服务程序地址
    EXTINT = 1<<3;                        // 清除EINT3中断标志
    VICIntEnable = 1<<17;                // 使能EINT3中断,EINT3在Bit17上
   
    while(1);                            // 等待中断
    return(0);
}

相关帖子

沙发
armecos| | 2008-4-21 00:35 | 只看该作者

是不是跳线问题,

关于smartarm2200中断有很详细文档说明,里面有BEEP发声范例源码。
ecos中断

使用特权

评论回复
板凳
houn|  楼主 | 2008-4-21 07:19 | 只看该作者

其他附加说明

我反复看了程序,是和书中一样,设置也按照书中提示设置.只是我的FLASH start addr 0x81000000,RAM start addr 0x40000000,是不是我在H-FLASHER设置有问题呢,我用版本:H-FLASH0.60版本,

使用特权

评论回复
地板
cs2132| | 2008-4-21 12:37 | 只看该作者

也许是这样

也许是当前模式中的中断没有使能,,

你运行的时候看看CPSR中的I位,,是否被禁能了.

使用特权

评论回复
5
zhaoyingf| | 2008-4-21 14:03 | 只看该作者

给你个初始化例子看看

void EXINT2Init(void)                                                                //光耦中断
{        
    PINSEL0 = ( PINSEL0 & 0x3FFFFFFF ) | 0x80000000;                                //连接P0.15为外部中断2
    EXTMODE = 0x0F;                                                                 //边沿触发
    EXTPOLAR = 0x04;                                                                //上升沿触发
    
    VICVectCntl9 = 0x20 | 0x10;                                                        //优先级9
    VICVectAddr9 = (uint32)IRQ_EXINT2;
    VICIntEnable = 0x10000;
}

使用特权

评论回复
6
song529110| | 2008-4-21 20:42 | 只看该作者

我也碰到了这样的问题

我也碰到了这样的问题
救命啊

使用特权

评论回复
7
houn|  楼主 | 2008-4-21 21:39 | 只看该作者

CPSR I位检查

我调试看了CPSR中的I位,允许中断啊,I位为0,还是不行,看来好要检查检查
FLASH设置如下;FLASH START ADDR 0X81000000,RAM START ADDR 0X40000000

使用特权

评论回复
8
zlgarm| | 2008-4-22 12:47 | 只看该作者

Re

houn  您好:
我运行了您说的那个程序,结果是没有问题。在:“光盘内容ARM嵌入式系统实验教程(二)ADS集成开发环境及JTAG仿真器应用H-JTAG 软件 ”这个目录下有两个.hfc文件,根据您是要在什么环境下调试,通过H-Flasher中的Load选项来选择不同文件,这样可以不用设置H-Flasher

On duty : liuzhaofu

使用特权

评论回复
9
houn|  楼主 | 2008-4-22 16:13 | 只看该作者

谢谢提醒

谢谢你的提醒,我用H-JTAG6.0版本,是从网上下的,我今晚回去在好好调试一下,彻底找出问题在那里,然后把查找的结果放到BBS上.

使用特权

评论回复
10
zlgarm| | 2008-4-23 10:07 | 只看该作者

Re

houn  您好:
在这要感谢您对网站的支持。
“彻底找出问题在那里,然后把查找的结果放到BBS上”
On duty :liuzhaofu

使用特权

评论回复
11
houn|  楼主 | 2008-4-23 20:21 | 只看该作者

周工,我调试结果如下

在这个中断实验中,我现在对中断进行调试,在调试 EXTINT = 1<<3;// 清除EINT3中断标志这步中,我发现EXTINT设置1<<3值后,EXTINT还是为0,我是比较疑惑,设置低电平触发,EXTINT = 1<<3后,EXTINT到底值是多少是对的,请周工说明

使用特权

评论回复
12
houn|  楼主 | 2008-4-24 21:00 | 只看该作者

中断问题的解决

谢谢大家和周工对我的关心,这个板子运行的中断程序没有错误,设置没有问题,一切都没有问题,问题在于我是搞软件出来,就是有点喜欢调试,同样也喜欢在中断程序调式,后来发现中断是不能调试.所以调试中断程序不会有任何反映,后来全速运行没有问题.中断能够响应.我就有个疑问,包含中断程序程序能不能调试,如果能调试,如何调试,请周工帮我解答

使用特权

评论回复
13
YeQishi| | 2008-4-24 23:43 | 只看该作者

re

在中断里设断点再全速就行了

使用特权

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

本版积分规则

11

主题

21

帖子

0

粉丝