OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13430|回复: 6

请教大神,stm32配置成下降沿触发中断,但是上升沿和下降沿都会进中断

[复制链接]

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-7-25
在线时间
0 小时
发表于 2014-7-25 12:27:39 | 显示全部楼层 |阅读模式
5金钱
各位大神,请教下,最近在调试stm32的外部中断,外部中断线的信号是电压比较器的输出端。在输入信号低于参考电压时产生下跳沿,此时触发中断,但是我发现在高于参考电压时产生的上升沿也会触发外部中断。外部中断的配置没有问题。通过示波器观看比较器的输出端,这个时候确实是有上升和下跳沿,波形上没有毛刺。后来实验,用单片机引脚每隔5s输出高低电平,这个时候只有下跳沿的时候会触发中断,但是经观察单片机输出的波形和比较器输出的波形差不多,都是比较漂亮的上升沿和下降沿,为何比较器输出的就会上升沿和下降沿都会进中断,而单片机输出的却不会呢、中断配置这一部分代码相同,没有做任何修改,请教各位帮助,谢谢!麻烦各位帮帮忙,谢谢[/mw_shl_code]
 EXTI_InitStructure.EXTI_Line = EXTI_Line1;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
 // EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//下降沿触发中断
  EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Rising;
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);[/mw_shl_code]
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQChannel;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);[/mw_shl_code]
[/mw_shl_code]
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_Init(GPIOA,&GPIO_InitStructure);//中断输入引脚配置[/mw_shl_code]
[/mw_shl_code]
[/mw_shl_code]
u8 itp=0;
void EXTI1_IRQHandler(void)
{
   if(EXTI_GetITStatus(EXTI_Line1)!= RESET)
       {  delay_nus(6000);  //去除抖动
         if(EXTI_GetITStatus(EXTI_Line1)!= RESET)
         {
          
           EXTI_ClearFlag(EXTI_Line1);
           itp++;
           GPIO_ResetBits(GPIOA,GPIO_Pin_6);//亮
           delay_nus(10000);
           GPIO_SetBits(GPIOA,GPIO_Pin_6);//灭
           EXTI_ClearFlag(EXTI_Line1); 
  
         }
       }
   EXTI_ClearFlag(EXTI_Line1);
   
}//中断处理函数
请求各位帮忙看看,谢谢


[/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

终于把问题解决了。我重新整理了下硬件滤波电路,之前测试时用的滤波电路是按键去抖电路,而按键的抖动频率达不到那么高,因此电容选择较大。而我这个红外对管出来的抖动频率特别高,因此将滤波电容减小,按照c=1/f的原则选取,效果好多了,最后又加上了施密特反相器,结果是不会再出现上升下降沿都进中断的问题了。 另外,用示波器观看的时候秒格在10ms时没有发现波形有很大干扰和波动,是因为其频率太高,观察不到。将秒格调到50 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-7-25
在线时间
0 小时
 楼主| 发表于 2014-7-25 12:27:40 | 显示全部楼层
终于把问题解决了。我重新整理了下硬件滤波电路,之前测试时用的滤波电路是按键去抖电路,而按键的抖动频率达不到那么高,因此电容选择较大。而我这个红外对管出来的抖动频率特别高,因此将滤波电容减小,按照c=1/f的原则选取,效果好多了,最后又加上了施密特反相器,结果是不会再出现上升下降沿都进中断的问题了。
另外,用示波器观看的时候秒格在10ms时没有发现波形有很大干扰和波动,是因为其频率太高,观察不到。将秒格调到50us时就能明确观察到高频干扰,学艺不精啊 ,同时提醒下大家注意下。多谢xiaoyan版主的帮助,谢谢。
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-7-25 19:07:58 | 显示全部楼层
这就奇怪了,既然单片机输出的波形没问题,那就是比较器硬件有问题了,代码暂时没看出什么问题。
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-7-25
在线时间
0 小时
 楼主| 发表于 2014-7-27 10:57:27 | 显示全部楼层
回复【2楼】xiaoyan:
---------------------------------
经测试,信号发生器出来的波形也是在上升沿的时候不会触发中断的,但是我看了下我的比较器输出端的波形,和信号发生器的波形差不多的,几乎没有毛刺的,为何就是不行呢?谢谢 您
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2014-8-7
在线时间
4 小时
发表于 2014-8-7 18:50:01 | 显示全部楼层
我有一个类似的问题,是用寄存器写的,代码如下文,本意是想让它上升沿计数一次,计数三次后led的状态取反,但是现在是有时记一次就变,有时候记两次就变,望各位大神指教,感激不尽,因为是新手,希望能附上代码。
 exti.h:
#ifndef _EXTI_H
#define _EXTI_H
#include"sys.h"
#define exti Ain(0)
void exti_init(void);
#endif
exti.c:
#include 
#include "exti.h"
#include "led.h"
#include "delay.h"
#include "usart.h"
static u16 i=0;
void EXTI0_IRQHandler(void)
{
i++;
if(i==3)
{
i=0;
led=!led;
}
EXTI->R=1ODR=1
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2014-7-25
在线时间
0 小时
 楼主| 发表于 2014-10-6 10:52:49 | 显示全部楼层
回复【5楼】中北的秋雨:
---------------------------------
进中断之后先清除中断标志位试试?
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
146
金钱
146
注册时间
2014-8-7
在线时间
4 小时
发表于 2014-11-8 13:58:39 | 显示全部楼层
回复【6楼】baige917:
---------------------------------
大神,就是你说的,先清除再运算
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-29 11:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表