大神们,麻烦指点下:以下是我的EXIT代码,代码执行后,灯一直亮,按下按键,也不会触发中断; 另外这个函数(EXTI15_10_IRQHandler)有什么用,一定要这样命名吗?
电路:PB15按键按下是接GND,没有按的时候是7.5K上拉:
IC:STM32F107VET6
代码:
void EXTI_GPIO_Config(void)
{
//初始化相应的GPIO管脚
//GPIO的复用功能必须打开
//打开GPIOB端口时钟,并且打开复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//GPIO结构体
GPIO_InitTypeDef GPIO_InitStructure;
//配置GPIO
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //选择输入模式为浮空输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//配置外部中断源并进行中断源和GPIO的连接
EXTI_InitTypeDef EXTI_InitStructure;
//清空中断标志
EXTI_ClearITPendingBit(EXTI_Line15);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource15);
EXTI_InitStructure.EXTI_Line = EXTI_Line15;//选择中断线路15
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//设置为中断请求,非事件请求
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //设置中断触发方式为上下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//外部中断使能
EXTI_Init(&EXTI_InitStructure);
//配置NVIC
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn; //选择中断通道5
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占式中断优先级设置为1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //响应式中断优先级设置为1
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //使能中断
NVIC_Init(&NVIC_InitStructure);
}
/*键盘中断(EXTI15)服务程序*/
void EXTI15_10_IRQHandler(void)
{
if (EXTI_GetITStatus(EXTI_Line15) == SET)
{
EXTI_ClearITPendingBit(EXTI_Line15);//清除标志
LED3(OFF);
}
}
#endif
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
还是不行,我发现我的工程文件里面没有中断函数EXTI15_10_IRQHandler,这个函数一般在哪个文件里面,是不是我漏了
一周热门 更多>