打印

stm8的外部中断经常进入两次,有源代码

[复制链接]
11574|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xt3203|  楼主 | 2012-1-18 18:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xt3203 于 2012-1-19 10:54 编辑

#include"stm8s105s4.h"
#define uint unsigned int
#define uchar unsigned char
_Bool LED1 @PA_ODR: 6;
_Bool LED2 @PA_ODR: 5;
_Bool LED3 @PA_ODR: 4;
_Bool K1 @PD_IDR: 4;
void EXTI_INIT(void)
{
EXTI_CR1 = 0x80;
}
void IO_INIT(void)
{
PA_DDR=0X70;
PA_CR1=0x70;
PD_CR1=0x10;
PD_CR2=0x10;
}
main()
{
_asm("sim");
EXTI_INIT();
IO_INIT();
_asm("rim");
LED1 = 1;
LED2 = 0;
LED3 = 1;

while (1);
}
@far @interrupt void KEY(void)
{
if(!K1) PA_ODR ^=0x70;
while(!K1);
}

在中断里把那几个LED取反一下而已,却发现中断经常进入两次,请问各位大哥怎么回事呀?
沙发
xt3203|  楼主 | 2012-1-19 10:37 | 只看该作者
自己顶,不能沉呀!麻烦各位了!

使用特权

评论回复
板凳
香水城| | 2012-1-19 17:04 | 只看该作者
你的程序没有一行注释,让别人怎么看?

你可以在中断中自己看看中断状态寄存器,看是什么引起的中断。

使用特权

评论回复
地板
xt3203|  楼主 | 2012-1-21 21:39 | 只看该作者
3# 香水城

STM8好像没有状态寄存器的呀?

使用特权

评论回复
5
xt3203|  楼主 | 2012-1-24 20:18 | 只看该作者
不能沉呀!

使用特权

评论回复
6
xt3203|  楼主 | 2012-1-25 15:41 | 只看该作者
坐等高人!

使用特权

评论回复
7
ccmc| | 2012-1-26 00:19 | 只看该作者
进中断了没关中断哇

使用特权

评论回复
8
香水城| | 2012-1-26 22:22 | 只看该作者
硬件上是如何触发中断的?是否有可能是硬件上触发了2次中断?比如使用按键但没有考虑去抖。

使用特权

评论回复
9
xt3203|  楼主 | 2012-1-30 23:49 | 只看该作者
7楼和8楼的方法都试过了,效果不大; 目前先不考虑硬件方面的问题, 请大家过目一下,软件方面有没有错误,麻烦大家了.

使用特权

评论回复
10
qianguiyi| | 2012-1-31 09:50 | 只看该作者
@far @interrupt void KEY(void)
{
...
EXTI_INIT()//加上这一句看看
}

使用特权

评论回复
11
xt3203|  楼主 | 2012-1-31 15:58 | 只看该作者
10# qianguiyi
EXTI_INIT()里面只是把中断设置为下降沿进入中断,重复设置主要是考虑哪方面原因呀?大家平时使用时没有发现类同的问题吗? 你们是怎么处理的呀?

使用特权

评论回复
12
xt3203|  楼主 | 2012-1-31 16:03 | 只看该作者
这只是一个很简单的程序而已,怎么会出现这么大的问题,搞不明白,有人能提供测试通过的代码代参巧吗?

使用特权

评论回复
13
香水城| | 2012-1-31 16:12 | 只看该作者
这只是一个很简单的程序而已,怎么会出现这么大的问题,搞不明白,有人能提供测试通过的代码代参巧吗?
xt3203 发表于 2012-1-31 16:03


一个巴掌拍不响,为什么你不从硬件上找找原因的?

使用特权

评论回复
14
xt3203|  楼主 | 2012-1-31 17:03 | 只看该作者
13# 香水城

我用示波器详细查看过了,没有发现触发信号有什么问题!

使用特权

评论回复
15
香水城| | 2012-2-1 09:55 | 只看该作者
贴出电路图看看,把示波器的波形也贴出来看看。

使用特权

评论回复
16
qianguiyi| | 2012-2-1 14:04 | 只看该作者
搞错了,是要清除中断,使用EXTI_SR1 |= 1<<X

使用特权

评论回复
17
xt3203|  楼主 | 2012-2-1 20:34 | 只看该作者
16# qianguiyi

EXTI_SR1 |= 1<<X
没有找到EXTI_SR1这个寄存器哦,另外后面的X是什么呀?

寄存器.jpg (24.45 KB )

寄存器.jpg

【RM0016】STM8S技术参考手册V4.pdf

4.68 MB

使用特权

评论回复
18
xt3203|  楼主 | 2012-2-5 15:08 | 只看该作者
你们两个人说得都对,谢谢大家了!感激不尽!

使用特权

评论回复
19
qianguiyi| | 2012-2-7 11:54 | 只看该作者
是什么问题?

使用特权

评论回复
20
xt3203|  楼主 | 2012-2-13 22:54 | 只看该作者
19# qianguiyi

进中断后,关中断,消抖,查询,OK

使用特权

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

本版积分规则

7

主题

167

帖子

1

粉丝