我要用嵌入式知识配置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 展开
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 展开
1个回答
展开全部
给你发个相关的配置外部中断的寄存器版函数,你可以参考下:
//外部中断配置函数
//只针对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上事件上升降沿触发
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询