概述
问题:引脚设置为外部中断上升沿触发,中断触发了,但都debug读不到io口电平的变化
1、初始化gpio引脚
void GPIO_Init(void)
{
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);
}
2、设置外部中断初始化
void EXTIx_Init(void)
{
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOF, EXTI_PinSource7);
EXTI_InitStructure.EXTI_Line = EXTI_Line7;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//EXTI_Trigger_Rising;
EXTI_Init(&EXTI_InitStructure);
/// 配置中断分组 4-15
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_15_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
NVIC_Init(&NVIC_InitStructure);
//清除中断标志位
EXTI_ClearITPendingBit(EXTI_Line7);
}
3、中断服务函数
void EXTI4_15_IRQHandler(void)
{
if((EXTI->PR & EXTI_Line7) != RESET)
{
Delay_Ms(1);
if(PF7_USB == 0X01)
{
state = sys_usb;
if(state == sys_off)
{
low_power();
}
}
EXTI_ClearITPendingBit(EXTI_Line7);
}
}
奇怪的现象,当io口有上升沿变化是,中断函数有触发响应,就都不到该io口电平的变化。
原因:没加上gpio时钟的初始化,加上下面的时钟的初始化后,一切就平安无事了;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF,ENABLE);
最后
以上就是害怕火为你收集整理的读不到gpio引脚电平的变化(外部中断上升沿触发,中断触发了)的全部内容,希望文章能够帮你解决读不到gpio引脚电平的变化(外部中断上升沿触发,中断触发了)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复