打印
[其他ST产品]

st7 外部中断问题???

[复制链接]
2551|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
siler|  楼主 | 2007-11-5 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是建立工程后自带的vector.c文件 我将外部中断1,对应中断向量地址0xFFF6。
在main.c中建立了中断服务函数,但是我无法进入中断,

/*    BASIC INTERRUPT VECTORS TABLE FOR ST7 devices
 *    Copyright (c) 2002 STMicroelectronics
 */

#ifndef NULL
#define NULL    (void *)0
#endif

extern void _stext();        /* startup routine */  
extern  void ei1_Int();//外部中断1服务函数

/* Interrupt vector table, to be linked at the address 0xFFE0 (in ROM) */ 
void (* const _vectab[])() = {
    NULL,              /* 0xFFE0 */
    NULL,            /* 0xFFE2 */
    NULL,            /* 0xFFE4 */
    NULL,            /* 0xFFE6 */
    NULL,            /* 0xFFE8 */
    NULL,            /* 0xFFEA */
    NULL,            /* 0xFFEC */
    NULL,            /* 0xFFEE */
    NULL,            /* 0xFFF0 */
    NULL,            /* 0xFFF2 */
    NULL,            /* 0xFFF4 */
    ei1_Int,            /* 0xFFF6 */
    NULL,            /* 0xFFF8 */
    NULL,            /* 0xFFFA */
    NULL,            /* Trap vector */
    _stext,            /* Reset Vector */
};
沙发
siler|  楼主 | 2007-11-5 16:27 | 只看该作者

??

我使用的是st7flite09,

这个mcu是不是没有中断标志位。

使用特权

评论回复
板凳
浪淘沙| | 2007-11-5 16:28 | 只看该作者

你是否指定了外部中断引脚?你是否初始化了外部中断引脚

是否定义了外部中断的触发条件?

使用特权

评论回复
地板
siler|  楼主 | 2007-11-5 16:34 | 只看该作者

???

我设置了EICR,把ei1设成了falling edge

使用特权

评论回复
5
siler|  楼主 | 2007-11-5 16:38 | 只看该作者

是不是还应该对cc寄存器的 I 位进行操作呀

使用特权

评论回复
6
浪淘沙| | 2007-11-5 16:47 | 只看该作者

当然要对CC寄存器的“I”位进行操作

使用特权

评论回复
7
siler|  楼主 | 2007-11-5 16:52 | 只看该作者

我设置了I还是不行

我用了 
#asm
 rim
#endasm       不行
还需要设置其他的吗?
谢谢        

使用特权

评论回复
8
浪淘沙| | 2007-11-5 16:54 | 只看该作者

我在3楼提出的问题你是如何做的?

使用特权

评论回复
9
siler|  楼主 | 2007-11-5 17:01 | 只看该作者

我设置了 EICR

设置EICR 选择了 下降沿触发 

不是这个嘛,还有其他需要设置吗

使用特权

评论回复
10
浪淘沙| | 2007-11-5 17:10 | 只看该作者

请看ST7FLite0的数据手册的10.5节

你需要通过DDR和OR寄存器选择和配置相应的I/O口。

使用特权

评论回复
11
siler|  楼主 | 2007-11-5 17:14 | 只看该作者

这是我的外部中断1初始化函数,你说的应该是这个

void Ei1_Init(void)//初始化ei1
{
 PADDR    = 0x1f;    //pa0--pa4为输出,pa7为输入
 PAOR    = 0x9f;    //pa0--pa4为out_push-pull,pa7为input中断
 EICR    = 0x08;    //中断控制寄存器,ex1为下降沿触发
}

使用特权

评论回复
12
siler|  楼主 | 2007-11-5 17:25 | 只看该作者

这是我的中断服务程序,请帮忙谢谢

@interrupt void ei1_Int(void)//ex1中断服务函数
{
 PADR=0x1f;
}

使用特权

评论回复
13
浪淘沙| | 2007-11-5 17:47 | 只看该作者

用示波器量一下你的PA7引脚是否有输入或电平变化

从你的设置来看应该在PA7引脚下降沿出现时产生中断,除非你的电路有问题或有更高级的中断阻碍了PA7的中断。

使用特权

评论回复
14
siler|  楼主 | 2007-11-5 17:58 | 只看该作者

莫名其妙的好使了。。??

我只是删掉了一些注释,程序没有改动,他就又好使了。

谢谢各位给我回帖

继续努力,搞定st

使用特权

评论回复
15
浪淘沙| | 2007-11-5 18:05 | 只看该作者

哈哈,上帝之手

请楼主还是能找找原因,否则下次又要怪罪上帝了。

使用特权

评论回复
16
siler|  楼主 | 2007-11-5 18:24 | 只看该作者

god is fair

我正在找原因,不过还没找到。

使用特权

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

本版积分规则

9

主题

38

帖子

0

粉丝