新手上路
- 积分
- 21
- 金钱
- 21
- 注册时间
- 2021-4-23
- 在线时间
- 5 小时
|
1金钱
#include "stm32f10x.h"
#include "EXTI.h"
#include "delay.h"
void EXTI_init(void)
{
EXTI_InitTypeDef EXTI_InitStruct;//
GPIO_InitTypeDef GPIO_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA,ENABLE);//
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource7);//
EXTI_InitStruct.EXTI_Line=EXTI_Line7;//
EXTI_InitStruct.EXTI_LineCmd=ENABLE;
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger= EXTI_Trigger_Falling;//
EXTI_Init(&EXTI_InitStruct);//
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//
NVIC_InitStruct.NVIC_IRQChannel =EXTI9_5_IRQn;//
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;//
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=0x01;//
NVIC_InitStruct.NVIC_IRQChannelSubPriority=0x01;//
NVIC_Init(&NVIC_InitStruct);//
}
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line7)!=RESET)
{
delay_ms(20);
LED1=!LED1; //LED1已经宏定义PBout(5)
EXTI_ClearITPendingBit(EXTI_Line7);
}
}
|
最佳答案
查看完整内容[请看2#楼]
我也遇到了这个问题 但刚刚我想通了
下面是你的代码:
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line7)!=RESET)
{
delay_ms(20);
LED1=!LED1; //LED1已经宏定义PBout(5)
EXTI_ClearITPendingBit(EXTI_Line7);
}
}
你犯了两个错误。
第一 你不应该把延时函数现在里面 否则都进入处理函数了 延时还有用吗
第二 我们将延时函数放 ...
|