初中生
最后登录1970-1-1
在线时间 小时
注册时间2018-5-1
|
RT,基本程序是根据教程一步一步写的,但是按下按键后没有反应。
#include "stm32f10x.h"
#include "./led/bsp_led.h"
#include "./key/bsp_key.h"
int main(void)
{
LED_GPIO_Config();
EXTI_KEY_Config();
while(1)
{
GPIO_ResetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);
}
}
主程序里面我在循环里面加了句 “GPIO_ResetBits(LED2_GPIO_PORT,LED2_GPIO_PIN);” 是想开机后led就点亮,进入中断后另一个LED亮,
但是当我把 “EXTI_KEY_Config();”这句注释掉后,led灯才可以正常亮,但如果不注释的话,led无法开机点亮,同时按键也没反应。
求各位前辈指教,谢谢。
#include "./key/bsp_key.h"
static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_PriorityGroupConfig(1);
NVIC_InitStruct.NVIC_IRQChannel= KEY1_EXTI_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel= KEY2_EXTI_IRQn;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStruct);
/*NVIC½á11ìå¡¢óÅÏè¼¶·Ö×é¡¢ÅäÖÃNVIC3õê¼»ˉ*/
}
void EXTI_KEY_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
EXTI_InitTypeDef EXTI_InitStruct;
RCC_APB2PeriphClockCmd(KEY1_GPIO_CLK,ENABLE);
RCC_APB2PeriphClockCmd(KEY2_GPIO_CLK,ENABLE);
RCC_APB2PeriphClockCmd(KEY1_AFIO_CLK,ENABLE);
NVIC_Configuration();
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin = KEY1_GPIO_PIN;
GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStruct);
GPIO_EXTILineConfig(KEY1_GPIO_PortSource, KEY1_GPIO_PinSource);
EXTI_InitStruct.EXTI_Line = KEY1_EXTI_LINE;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
GPIO_InitStruct.GPIO_Pin = KEY2_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStruct);
GPIO_EXTILineConfig(KEY2_GPIO_PortSource, KEY2_GPIO_PinSource);
EXTI_InitStruct.EXTI_Line = KEY2_EXTI_LINE;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
}
#ifndef __BSP_KEY_H
#define __BSP_KEY_H
#include "stm32f10x.h"
#define KEY1_EXTI_IRQn EXTI0_IRQn
#define KEY1_GPIO_PIN GPIO_Pin_0
#define KEY1_GPIO_CLK RCC_APB2Periph_GPIOA
#define KEY1_AFIO_CLK RCC_APB2Periph_AFIO
#define KEY1_GPIO_PORT GPIOA
#define KEY1_EXTI_LINE EXTI_Line0
#define KEY1_GPIO_PortSource GPIO_PortSourceGPIOA
#define KEY1_GPIO_PinSource GPIO_PinSource0
#define KEY1_IRQHandler EXTI0_IRQHandler
#define KEY2_EXTI_IRQn EXTI15_10_IRQn
#define KEY2_GPIO_PIN GPIO_Pin_13
#define KEY2_GPIO_CLK RCC_APB2Periph_GPIOC
#define KEY2_GPIO_PORT GPIOC
#define KEY2_EXTI_LINE EXTI_Line13
#define KEY2_GPIO_PortSource GPIO_PortSourceGPIOC
#define KEY2_GPIO_PinSource GPIO_PinSource13
#define KEY2_IRQHandler EXTI15_10_IRQHandler
void EXTI_KEY_Config(void);
#endif
|
|