我要用嵌入式知识配置4个按键的中断,下面是stm32外部中断的初始化函数的参考代码,该怎么修改?

EXTI->RTSR|=1<<0;EXTI->IMR|=1<<0;SYSCFG->EXTICR[0]&=~(0x0f<<(0*4));NVIC_SetPriorityGr... EXTI->RTSR |= 1 << 0;
EXTI->IMR |= 1 << 0;
SYSCFG->EXTICR[0] &= ~(0x0f << (0 * 4));
NVIC_SetPriorityGrouping(7 - 3);
Priority = NVIC_EncodePriority((7-3),4,0);
NVIC_SetPriority(EXTI0_IRQn,Priority);
NVIC_EnableIRQ(EXTI0_IRQn);

四个按键分别为PA0 PE2 PE3 PE4
展开
 我来答
放屁如打雷轰天裂地罗三炮
2019-04-09 · 超过30用户采纳过TA的回答
知道答主
回答量:80
采纳率:75%
帮助的人:20.5万
展开全部

给你发个相关的配置外部中断的寄存器版函数,你可以参考下:

//外部中断配置函数
//只针对GPIOA~I;不包括PVD,RTC,USB_OTG,USB_HS,以太网唤醒等
//参数:
//GPIOx:0~8,代表GPIOA~I
//BITx:需要使能的位;
//TRIM:触发模式,1,下升沿;2,上降沿;3,任意电平触发
//该函数一次只能配置1个IO口,多个IO口,需多次调用
//该函数会自动开启对应中断,以及屏蔽线        
void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM) 

u8 EXTOFFSET=(BITx%4)*4;  
RCC->APB2ENR|=1<<14;   //使能SYSCFG时钟  
SYSCFG->EXTICR[BITx/4]&=~(0x000F<<EXTOFFSET);//清除原来设置!!!
SYSCFG->EXTICR[BITx/4]|=GPIOx<<EXTOFFSET; //EXTI.BITx映射到GPIOx.BITx 
//自动设置
EXTI->IMR|=1<<BITx; //开启line BITx上的中断(如果要禁止中断,则反操作即可)
if(TRIM&0x01)EXTI->FTSR|=1<<BITx; //line BITx上事件下降沿触发
if(TRIM&0x02)EXTI->RTSR|=1<<BITx; //line BITx上事件上升降沿触发
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式