OpenEdv-开源电子网

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

外部中断服务函数优先级里,同一个函数里怎样设置优先级?

[复制链接]

11

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2015-4-22
在线时间
16 小时
发表于 2015-5-12 10:06:43 | 显示全部楼层 |阅读模式
5金钱
想问下同一个中断服务函数里面是怎样设置优先级的呢?为什么我这样设置的时候按KEY1 LED1有时候会不亮,而且会干挠到LED0。


#include"exti.h"
#include"led.h"
#include"key.h"
#include"delay.h"
#include"usart.h"

//外部中断0服务程序
void EXTI0_IRQHandler(void)
{
delay_ms(10); //消抖
if(WK_UP == 1)
{
LED0 =! LED0;
LED1 =! LED1;
}
EXTI->R = 1<<0; //清除LIEN0上的中断标志位
}

//外部中断5服务程序
void EXTI9_5_IRQHandler(void)
{
delay_ms(10);
if(KEY0 == 0) LED0 =! LED0;
EXTI->R = 1<<5; //清除LIEN5上的中断标志位
}

//外部中断15服务程序
void EXTI15_10_IRQHandler(void)
{
delay_ms(10);
if(KEY1 ==0) LED1 =! LED1;

else if(KEYS0 ==0) LED0 =! LED0;

else if(KEYS1 ==0) LED0 =! LED0;

else if(KEYS2 ==0) LED0 =! LED0;

else if(KEYS3 ==0) LED0 =! LED0;

else if(KEYS4 ==0) LED0 =! LED0;
EXTI->R = 1<<15; //清除LIEN15上的中断标志位
EXTI->R = 1<<10; //清除LIEN10上的中断标志位
EXTI->R = 1<<11; //清除LIEN11上的中断标志位
EXTI->R = 1<<12; //清除LIEN12上的中断标志位
EXTI->R = 1<<13; //清除LIEN13上的中断标志位
EXTI->R = 1<<14; //清除LIEN14上的中断标志位
}


//外部中断初始化程序,初始化PA0,PC5,PA15为中断输入
void EXTI_Init(void)
{
KEY_Init(); //按键初始化

Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
Ex_NVIC_Config(GPIO_C,5,FTIR); //下降沿触发
Ex_NVIC_Config(GPIO_A,15,FTIR); //下降沿触发

Ex_NVIC_Config(GPIO_B,10,FTIR); //下降沿触发
Ex_NVIC_Config(GPIO_B,11,FTIR); //下降沿触发
Ex_NVIC_Config(GPIO_B,12,FTIR); //下降沿触发
Ex_NVIC_Config(GPIO_B,13,FTIR); //下降沿触发
Ex_NVIC_Config(GPIO_B,14,FTIR); //下降沿触发

MY_NVIC_Init(2,2,EXTI0_IRQn,2); //抢占2,子优先级2,组2
MY_NVIC_Init(2,1,EXTI9_5_IRQn,2); //抢占2, 子优先级1,组2
MY_NVIC_Init(2,0,EXTI15_10_IRQn,2); //抢占2,子优先级0, 组2

MY_NVIC_Init(1,2,EXTI15_10_IRQn,2); //抢占1,子优先级2, 组2
MY_NVIC_Init(1,1,EXTI15_10_IRQn,2); //抢占1,子优先级1, 组2
MY_NVIC_Init(1,0,EXTI15_10_IRQn,2); //抢占1,子优先级0, 组2
MY_NVIC_Init(0,2,EXTI15_10_IRQn,2); //抢占0,子优先级2, 组2
MY_NVIC_Init(0,1,EXTI15_10_IRQn,2); //抢占0,子优先级1, 组2
}

最佳答案

查看完整内容[请看2#楼]

同一个服务函数,只有一个优先级,以最后设置的为准。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-5-12 10:06:44 | 显示全部楼层
同一个服务函数,只有一个优先级,以最后设置的为准。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 13:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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