OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4238|回复: 1

设置了多个外部中断却只能进去一个

[复制链接]

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2015-4-26
在线时间
2 小时
发表于 2015-5-5 18:37:18 | 显示全部楼层 |阅读模式
5金钱
弄了一下午还是没有解决,请各位帮忙看看
问题描述:PB1和PC13的中断只能进去一个,取决于最先触发的哪个哪个就能进去,如果接着触发另一个是没反应的,而且会导致第一个正常的也无法进入中断了。
(用PWM控制LED灯,当led0pwmvalx = 10 灯是亮的,led0pwmvalx = 899 灯是灭的 
主函数
[mw_shl_code=c,true]#include "stm32f10x.h" #include"led.h" #include"exti.h" #include "pwm.h" #include "sys.h" #include"exti_PB1.h" #include"exti_PC13.h" #include"ADC.h" #include "delay.h" #include"LED_Control_algorithm.h" int main(void) { delay_init(); //延时初始化 TIM1_PWM_Init(899,0); //PWM开启 NVIC_Configuration_sys(); //中断分组 EXTI_PB1_Config(); //PB1中断初始化 EXTI_PC13_Config();//PC13中断初始化 led0pwmval1=led0pwmval2=10; while(1) { TIM_SetCompare1(TIM1,led0pwmval1); TIM_SetCompare4(TIM1,led0pwmval2); } } [/mw_shl_code]
[mw_shl_code=c,true]#include"exti_PB1.h" void EXTI_PB1_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /*外设时钟+AFIO时钟 使能*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); NVIC_Configuration(); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource1); EXTI_InitStructure.EXTI_Line = EXTI_Line1; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling ; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); } static void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; // NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //中断优先级分配方式 /*配置中断源*/ NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } [/mw_shl_code]

[mw_shl_code=c,true]#include"exti_PC13.h" void EXTI_PC13_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /*外设时钟+AFIO时钟 使能*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE); NVIC_Configuration(); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); EXTI_InitStructure.EXTI_Line = EXTI_Line13 | EXTI1_IRQn; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling ; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); } static void NVIC_Configuration(void) { NVIC_InitTypeDef NVIC_InitStructure; //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //中断优先级分配方式 /*配置中断源*/ NVIC_InitStructure.NVIC_IRQChannel =EXTI15_10_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } [/mw_shl_code]

中断函数
[mw_shl_code=c,true]void EXTI1_IRQHandler()//1?LED????? { delay_ms(10); //?? if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0) { if(EXTI_GetITStatus(EXTI_Line1)!=RESET) { if(led0pwmval2==10) led0pwmval2=899; else led0pwmval2=10; EXTI_ClearITPendingBit(EXTI_Line1); } } } void EXTI15_10_IRQHandler()//1?LED????? { delay_ms(10); //?? if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13) == 0) { if(EXTI_GetITStatus(EXTI_Line13)!=RESET) { if(led0pwmval1==10) led0pwmval1=899; else led0pwmval1=10; EXTI_ClearITPendingBit(EXTI_Line13); } } }[/mw_shl_code]

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2015-5-5 20:42:26 | 显示全部楼层
清中断标志,位置放错了。

移出来,和 delay_ms 放同一层级。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 20:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表