标题:
STM32外部中断无法触发
[打印本页]
作者:
1844952977
时间:
2019-9-1 10:59
标题:
STM32外部中断无法触发
以下是我外部中断的函数 我就想问 为什么外部中断无法触发呢 我直接都把引脚接3.3V了还是无法触发 我IO口PDin4和5配置的都是下拉 PBin12和13配置的是上拉。 请问为什么触发不成功啊。。求教求教
void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖
if(PDin(4)==1)
{
left();
}
EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
}
//外部中断2服务程序
void EXTI2_IRQHandler(void)
{
delay_ms(10); //消抖
if(PDin(5)==1)
{
right();
}
EXTI_ClearITPendingBit(EXTI_Line2);//清除LINE2上的中断标志位
}
//外部中断3服务程序
void EXTI3_IRQHandler(void)
{
delay_ms(10); //消抖
if(PBin(12)==0)
{
stop();
chuansongdai_work(1);
if(PBin(13)==0)
{
chuansongdai_work(3); //传送带停
}
}
EXTI_ClearITPendingBit(EXTI_Line3); //清除LINE3上的中断标志位
}
//外部中断4服务程序
void EXTI4_IRQHandler(void)
{
delay_ms(10); //消抖
EXTI_ClearITPendingBit(EXTI_Line4);//清除LINE4上的中断标志位
}
//外部中断初始化程序
//初始化PE2~4,PA0为中断输入.
void EXTIX_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
//KEY_Init(); //按键对应的IO口初始化
hongwai_init();
huidu_init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);//使能SYSCFG时钟
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource12);//PE2 连接到中断线2
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource13);//PE3 连接到中断线3
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource5);//PE4 连接到中断线4
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOD, EXTI_PinSource4);//PA0 连接到中断线0
/* 配置EXTI_Line0 */
EXTI_InitStructure.EXTI_Line = EXTI_Line0 | EXTI_Line4;//LINE0
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//使能LINE0
EXTI_Init(&EXTI_InitStructure);//配置
/* 配置EXTI_Line2,3,4 */
EXTI_InitStructure.EXTI_Line = EXTI_Line2 | EXTI_Line3;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断事件
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断线使能
EXTI_Init(&EXTI_InitStructure);//配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;//外部中断0
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;//抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
NVIC_Init(&NVIC_InitStructure);//配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn;//外部中断2
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
NVIC_Init(&NVIC_InitStructure);//配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;//外部中断3
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
NVIC_Init(&NVIC_InitStructure);//配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;//外部中断4
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;//抢占优先级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;//子优先级2
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道
NVIC_Init(&NVIC_InitStructure);//配置
}
复制代码
作者:
woshige
时间:
2019-9-2 09:51
用断点调试一下,如果没进中断就去找触发的条件、中断配置,从后往前推
作者:
1844952977
时间:
2019-9-5 15:36
woshige 发表于 2019-9-2 09:51
用断点调试一下,如果没进中断就去找触发的条件、中断配置,从后往前推
已经解决了 谢谢
作者:
傻蛋儿
时间:
2020-1-3 22:54
1844952977 发表于 2019-9-5 15:36
已经解决了 谢谢
楼主,你是怎么解决的?我也遇到和你一样的问题,谢谢!
作者:
omrcard
时间:
2020-5-14 14:40
1844952977 发表于 2019-9-5 15:36
已经解决了 谢谢
小气,只问不大,咋解决的不说
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1