打印

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

[复制链接]
358|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
没名字的人|  楼主 | 2020-4-24 12:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近刚开始学习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);
        }
}

使用特权

评论回复

相关帖子

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

本版积分规则

420

主题

432

帖子

0

粉丝