OpenEdv-开源电子网

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

关于STM32上应用MQ2

[复制链接]

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-13
在线时间
9 小时
发表于 2017-11-25 11:50:33 | 显示全部楼层 |阅读模式
10金钱
#include "mq2.h"
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
void Mq2_Init(void)
{
     GPIO_InitTypeDef   GPIO_InitStruct;
     EXTI_InitTypeDef   EXTI_InitStruct;
     NVIC_InitTypeDef   NVIC_InitStruct;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD;
    GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
    GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOC,&GPIO_InitStruct);
    GPIO_ResetBits(GPIOB,GPIO_Pin_2);   
   
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource2);
   
   
    EXTI_InitStruct.EXTI_Line=EXTI_Line2;
    EXTI_InitStruct.EXTI_LineCmd=ENABLE;
    EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
    EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;
    EXTI_Init(&EXTI_InitStruct);
   
    NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
    NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
    NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
    NVIC_Init(&NVIC_InitStruct);
   
}


void EXTI2_IRQHandler(void)
{
   
    delay_ms(10);
    LED0=!LED0;
    delay_ms(500);
    LED0=!LED0;
    printf("dangerous\r\n");
    EXTI_ClearITPendingBit(EXTI_Line2);
   
}  

MQ2用数字输出,这样配置为什么不管用呢?

最佳答案

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

void Mq2_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; EXTI_InitTypeDef EXTI_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD; GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init( ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-13
在线时间
9 小时
 楼主| 发表于 2017-11-25 11:50:34 | 显示全部楼层
void Mq2_Init(void)
{
         GPIO_InitTypeDef   GPIO_InitStruct;
         EXTI_InitTypeDef   EXTI_InitStruct;
         NVIC_InitTypeDef   NVIC_InitStruct;


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
       
       
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPD;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_InitStruct);
        GPIO_SetBits(GPIOB,GPIO_Pin_2);       
       
       
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource2);
       
       
       
       

       

        EXTI_InitStruct.EXTI_Line=EXTI_Line2;
        EXTI_InitStruct.EXTI_LineCmd=ENABLE;
        EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;
        EXTI_Init(&EXTI_InitStruct);
       
       
       
       
        NVIC_InitStruct.NVIC_IRQChannel=EXTI2_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
        NVIC_Init(&NVIC_InitStruct);


       
       
}


void EXTI2_IRQHandler(void)
{

        delay_ms(1);
   

        LED0=!LED0;
        delay_ms(500);
        LED0=!LED0;
        printf("dangerous\r\n");
       
        EXTI_ClearITPendingBit(EXTI_Line2);

}
回复

使用道具 举报

0

主题

207

帖子

0

精华

高级会员

Rank: 4

积分
959
金钱
959
注册时间
2017-5-27
在线时间
108 小时
发表于 2017-11-25 13:35:14 | 显示全部楼层
先不管你功能怎么样?
void EXTI2_IRQHandler(void)
{
   
    delay_ms(10);
    LED0=!LED0;
    delay_ms(500);
    LED0=!LED0;
    printf("dangerous\r\n");
    EXTI_ClearITPendingBit(EXTI_Line2);
   
}
这样在中断里面延时,你觉得好吗?
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-13
在线时间
9 小时
 楼主| 发表于 2017-11-28 21:17:40 | 显示全部楼层
lanlzp 发表于 2017-11-25 13:35
先不管你功能怎么样?
void EXTI2_IRQHandler(void)
{

对于中断,我也是第一次自己写,了解的不是很多,我把延时去了,如果检测到烟雾就在串口打印dangerous,但是还是没有用,请指教。
回复

使用道具 举报

1

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-13
在线时间
9 小时
 楼主| 发表于 2017-12-13 15:37:17 | 显示全部楼层
是中断进不去,请问有谁知道是哪里的问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 14:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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