野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11034|回复: 5

各位前辈,可以帮我查看一下这个按键中断代码吗,找了好久不知道哪里错了

[复制链接]
发表于 2018-11-23 16:12:30 | 显示全部楼层 |阅读模式
最近刚开始学习STM32,学习到了按键中断这一章节,写了一段代码,但是按键没有反应,不知道哪里除了问题,LED灯是PB0,按键是PA0头文件
#ifndef __KEYIT__H__
#define __KEYIT__H__
#include"stm32f10x.h"
#define LED_T  (GPIOB->ODR^=GPIO_Pin_0)
void RCC_Config(void);
void LED_Config(void);
void NVIC_Config(void);
void EXTI_Config(void);

#endif /*__KEYIT__H__*/



#include"keyit.h"
#include"stm32f10x_gpio.h"
#include"stm32f10x_rcc.h"
#include"stm32f10x_exti.h"
#include"misc.h"
#include"stm32f10x.h"
//RCC时钟初始化
void RCC_Config(void)
{
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
}

//LED配置函数
void LED_Config(void)
{
        GPIO_InitTypeDef  GPIO_Initstructure;
        GPIO_Initstructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Initstructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_Initstructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOB,&GPIO_Initstructure);

}

//NVIC
void NVIC_Config(void)
{
        NVIC_InitTypeDef  NVIC_Initstructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_Initstructure.NVIC_IRQChannel=EXTI2_IRQn;
        NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_Initstructure.NVIC_IRQChannelSubPriority=1;
        NVIC_Initstructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_Initstructure);
}

//EXTI
void EXTI_Config(void)
{

        EXTI_InitTypeDef EXTI_Initstructure;
        GPIO_InitTypeDef GPIO_Initstructure;
        NVIC_Config();
        GPIO_Initstructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_Initstructure.GPIO_Pin=GPIO_Pin_0;
        GPIO_Init(GPIOA,&GPIO_Initstructure);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
       
       
        EXTI_Initstructure.EXTI_Line=EXTI_Line2;
        EXTI_Initstructure.EXTI_Mode=EXTI_Mode_Interrupt;
        EXTI_Initstructure.EXTI_Trigger=EXTI_Trigger_Rising;
        EXTI_Initstructure.EXTI_LineCmd=ENABLE;
        EXTI_Init(&EXTI_Initstructure);
}

//main函数
#include"stm32f10x.h"
#include"keyit.h"
int main(void)
{
        RCC_Config();
        LED_Config();
        EXTI_Config();
        GPIO_SetBits(GPIOB,GPIO_Pin_0);
        while(1)
        {
               
        }
}


//中断处理函数
void EXTI2_IRQHandler(void)
{
        if(EXTI_GetITStatus(EXTI_Line2)!=RESET)
        {
                LED_T ;
                EXTI_ClearITPendingBit(EXTI_Line2);
        }
}

回复

使用道具 举报

发表于 2018-11-23 17:53:40 | 显示全部楼层
在中断函数设置个断点调试看看会不会跑进去
回复 支持 反对

使用道具 举报

发表于 2018-11-24 09:25:42 | 显示全部楼层
EXTI_Initstructure.EXTI_Line=EXTI_Line2;
回复 支持 反对

使用道具 举报

发表于 2018-11-24 09:26:26 | 显示全部楼层
EXTI_Initstructure.EXTI_Line=EXTI_Line2;
你说你的按键是PA0   那么应该是Line0才对吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-26 20:00:27 | 显示全部楼层
legend_j5x7z 发表于 2018-11-24 09:26
EXTI_Initstructure.EXTI_Line=EXTI_Line2;
你说你的按键是PA0   那么应该是Line0才对吧

谢谢谢谢,改成LINE0就对了,我还是太菜了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-11-26 20:01:06 | 显示全部楼层
随风 发表于 2018-11-23 17:53
在中断函数设置个断点调试看看会不会跑进去

改成LINE0就好了,谢谢谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 03:10 , Processed in 0.029666 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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