STM32F4中断
STM32F4 interrupt
我正在尝试在 STM32F401RE 中执行非常简单的中断代码,我按下按钮,LED2 应该根据按钮触发的外部中断打开。
我在 nucleo 板 F401 中使用用户按钮(蓝色按钮),根据板数据表引出线对应于 PC13。
我尝试了不同的选项,但 LED2 仍然关闭,这是我使用的代码:
void Interrupt_config(void)
{
RCC->APB2ENR |=(1<<14);
SYSCFG->EXTICR[4] |=(1<<5);
EXTI->IMR |=(1<<13);
EXTI->FTSR |=(1<<13);
EXTI->PR =(1<<13);
NVIC_SetPriority(EXTI4_IRQn,0);
NVIC_EnableIRQ(EXTI4_IRQn);
}
int main(void)
{
sysconfig();
Interrupt_config();
while(1)
{
if(flag)
{
GPIOA->ODR |= (1<<5);
}
}
}
我使用了轮询方法(无中断),当仅使用 LED_initialize() 按下按钮时 LED2 亮起; Button_init();
尚未检查您的 IRQ 设置代码,但您需要的 PC13 处理程序是 EXTI15_10_IRQHandler
。
编辑:
另一个问题:EXTICR是4个字长。这是不正确的:SYSCFG->EXTICR[4] |=(1<<5);
.
我正在尝试在 STM32F401RE 中执行非常简单的中断代码,我按下按钮,LED2 应该根据按钮触发的外部中断打开。
我在 nucleo 板 F401 中使用用户按钮(蓝色按钮),根据板数据表引出线对应于 PC13。 我尝试了不同的选项,但 LED2 仍然关闭,这是我使用的代码:
void Interrupt_config(void)
{
RCC->APB2ENR |=(1<<14);
SYSCFG->EXTICR[4] |=(1<<5);
EXTI->IMR |=(1<<13);
EXTI->FTSR |=(1<<13);
EXTI->PR =(1<<13);
NVIC_SetPriority(EXTI4_IRQn,0);
NVIC_EnableIRQ(EXTI4_IRQn);
}
int main(void)
{
sysconfig();
Interrupt_config();
while(1)
{
if(flag)
{
GPIOA->ODR |= (1<<5);
}
}
}
我使用了轮询方法(无中断),当仅使用 LED_initialize() 按下按钮时 LED2 亮起; Button_init();
尚未检查您的 IRQ 设置代码,但您需要的 PC13 处理程序是 EXTI15_10_IRQHandler
。
编辑:
另一个问题:EXTICR是4个字长。这是不正确的:SYSCFG->EXTICR[4] |=(1<<5);
.