我要用嵌入式知识配置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个回答
2019-04-09
展开全部
寄存器配置一定要看手册来配,不然谁会
STM32的GPIO多很多,所有的GPIO口都可用作外部中断,但同组的只能选择一个,如GPIOA的第1脚与其他都是1脚(如GPIOC的第一脚)的归为一组,所以SYSCFG->EXTICR[0] &= ~(0x0f << (0 * 4));这句是来配置外部中断0的中断线选择GPIOA的,即GPIOA的第0脚;
EXTICR[0]是选择外部中断0到3的,其他以此类推。
例如你的按键为PC5,则你选择外部中断5,
SYSCFG->EXTICR[1] &= ~(0x0f << (1 * 4));
配置成上升沿触发EXTI->RTSR |= 1 << 5;
或者配置成下降沿触发EXTI->FTSR |= 1 << 5;
或者两者都行,这需要看你的外部电路,按下由低电平转高则选上升沿
最后开放对应中断线的请求EXTI->IMR |= 1 << 5;
后面那几行根据你的要求写中断分组,中断优先级,最后写你的中断函数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询