#include "stm32f10x.h"
#include "delay.h"
//#define KEY0 PEin(4)
#define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
#define LEDO PBout(5)
#define LED1 PEout(5)
int main(void)
{
EXTI_InitTypeDef EXTI_Initstrue;
NVIC_InitTypeDef NVIC_Initstrue;
GPIO_InitTypeDef GPIO_Initstruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB,ENABLE);//使能PE PB时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//配置外部EXTI4时钟
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);//映射GPIO->外部中断
GPIO_Initstruct.GPIO_Pin=GPIO_Pin_4;
GPIO_Initstruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Initstruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_Init(GPIOE,&GPIO_Initstruct);//配置KEY0(PE.4)上拉输入
GPIO_SetBits(GPIOE,GPIO_Pin_4);
GPIO_Initstruct.GPIO_Pin=GPIO_Pin_5;
GPIO_Initstruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Initstruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOE,&GPIO_Initstruct);//配置LED1(PE.5)推挽输出
GPIO_Init(GPIOB,&GPIO_Initstruct);//配置LED0(PB.5)推挽输出
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
EXTI_Initstrue.EXTI_Line=EXTI_Line4;
EXTI_Initstrue.EXTI_LineCmd=ENABLE;
EXTI_Initstrue.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_Initstrue.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_Initstrue); //外部中断初始化
NVIC_Initstrue.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_Initstrue.NVIC_IRQChannelCmd=ENABLE;
NVIC_Initstrue.NVIC_IRQChannelPreemptionPriority=2;
NVIC_Initstrue.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_Initstrue);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组
while(1)
{
LEDO=0;
LED1=0;
}
}
void EXTI4_IRQHandler()
{
delay_ms(10);
if(KEY0==0)
{
LEDO=0; //点亮LED0;
LED1=1;
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
果然是这个问题,谢谢了
一周热门 更多>