初级会员

- 积分
- 53
- 金钱
- 53
- 注册时间
- 2014-7-12
- 在线时间
- 4 小时
|
1金钱
KEY_Init();
RCC->APB2ENR |= 1<<14;
SYSCFG->EXTICR[1] |= 1<<10;
SYSCFG->EXTICR[1] &=~((1<<11)|(1<<9)|(1<<8)); //设置PE2为外部中断2
SYSCFG->EXTICR[1] |= 1<<10;
SYSCFG->EXTICR[1] &=~((1<<15)|(1<<13)|(1<<12)); //设置PE3为外部中断3
SYSCFG->EXTICR[2] |= 1<<2;
SYSCFG->EXTICR[1] &=~((1<<3)|(1<<1)|(1<<0)); //设置PE4为外部中断4
SYSCFG->EXTICR[1] &=~((1<<3)|(1<<2)|(1<<1)|(1<<0)); //设置PA0为外部中断0
EXTI->RTSR |= 1<<0;
EXTI->FTSR |= ((1<<2)|(1<<3)|(1<<4));
EXTI->IMR |=((1<<0)|(1<<2)|(1<<3)|(1<<4));
NVIC->ISER[0] |=((1<<13)|(1<<15)|(1<<16)|(1<<17));
// Ex_NVIC_Config(GPIO_E,2,FTIR); //下降沿触发
// Ex_NVIC_Config(GPIO_E,3,FTIR); //下降沿触发
// Ex_NVIC_Config(GPIO_E,4,FTIR); //下降沿触发
// Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发
// MY_NVIC_Init(3,2,EXTI2_IRQn,2); //抢占3,子优先级2,组2
// MY_NVIC_Init(2,2,EXTI3_IRQn,2); //抢占2,子优先级2,组2
// MY_NVIC_Init(1,2,EXTI4_IRQn,2); //抢占1,子优先级2,组2
// MY_NVIC_Init(0,2,EXTI0_IRQn,2); //抢占0,子优先级2,组2
F4的开发板用原子的例程就没问题,按我的设置就是不进中断。寄存器那个地方没有设置还是什么问题啊?
|
最佳答案
查看完整内容[请看2#楼]
这里有一个大坑,STM32大多数寄存器都是从1开始编号的,然而C的数组是从0开始编号的,所以你应该配置SYSCFG->EXTICR[0]这个寄存器。
|