TA的每日心情 | 奋斗 2014-6-4 13:58 |
---|
签到天数: 188 天 连续签到: 1 天 [LV.7]常住居民III
|
本帖最后由 zwj108 于 2012-11-24 09:10 编辑
下面是我配置外部中断的代码,那里有问题啊,为什么进不去中断啊{:soso_e118:}
void exti_init(void)
{
EXTI_InitTypeDef EXTI_InitStruct;
GPIO_InitTypeDef GPIO_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE); //系统配置寄存器时钟
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); //IO口时钟使能
/*IO口初始化*/
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0; //选择IO口
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN; //输入模式
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_Level_2; //翻转速度
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOA, &GPIO_InitStruct);
/*外部中断初始化设置*/
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0); //外部中断源设置
EXTI_InitStruct.EXTI_Line=EXTI_Line0; //外部引线1
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt; //外部中断
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling; //下降沿触发中断
EXTI_InitStruct.EXTI_LineCmd=ENABLE; //开启中断
EXTI_Init(&EXTI_InitStruct); //初始化
/*中断嵌套初始化*/
NVIC_InitStruct.NVIC_IRQChannel=EXTI0_1_IRQn; //0-1频道
NVIC_InitStruct.NVIC_IRQChannelPriority=0; //优先级0
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; //开启
NVIC_Init(&NVIC_InitStruct);
}
结合F0的板子,使用用户按键进不去中断,上述代码有两处问题,
1.F0的板子用户按键使用3.3V和5V上拉,所以在使用时PA0口的输入模式应设置为下拉模式即
GPIO_InitStruct.GPIO_PuPd=GPIO_PuPd_DOWN;
2.触发中断就使用上升沿触发即
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Rising;
这就是我为什么用万用表笔触碰PA0管脚 能进入中断,加按键就不行啦。 |
|