STM32CUBEIDE-F407(3)-外部中断EXTI

本文详细介绍了如何通过STM32CUBEIDE配置STM32F407的外部中断,包括事件控制器的工作原理、中断线设置、中断优先级管理和中断回调函数的编写,展示了如何利用GPIO实现外部中断触发特定功能。
摘要由CSDN通过智能技术生成

概述

本章通过STM32CUBEIDE配置STM32F407的外部中断

原理

外部中断 / 事件控制器包含多达 23 个用于产生事件 / 中断请求的边沿检测器。每根输入线都可
单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或
边沿触发)。每根输入线还可单独屏蔽。挂起寄存器用于保持中断请求的状态线。

 

 

每个中断/事件线上都具有独立的触发和屏蔽,每个中断线都具有专用的状态位,支持多达 23 个软件事件 /中断请求, 检测脉冲宽度低于 APB2 时钟宽度的外部信号。

 如图所示,每个中断线对应9个中断源,即9个GPIO口,即可设置相应的上升沿触发、下降沿触发以及电平翻转触发,对应相应的外部中断触发。

IDE操作

注意:外部中断的优先级通常要低于定时器中断

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI3_IRQn, 3, 0);
  HAL_NVIC_EnableIRQ(EXTI3_IRQn);

  HAL_NVIC_SetPriority(EXTI4_IRQn, 3, 0);
  HAL_NVIC_EnableIRQ(EXTI4_IRQn);

通常中断函数都需要在库函数中的回调函数里进行编写,回调函数以及其作用都在以下的文件里

中断函数编写:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
 
    if(GPIO_Pin == GPIO_PIN_4)
     {
         Inverter_DRV_count++;
         if(Inverter_DRV_count==1)
         {
             Start_flag=1;
             HAL_GPIO_WritePin(GPIOF,GPIO_PIN_14,GPIO_PIN_SET);
         }
         if(Inverter_DRV_count==2)
         {
             Start_flag=0;
             Inverter_DRV_count=0;
             HAL_GPIO_WritePin(GPIOF,GPIO_PIN_14,GPIO_PIN_RESET);
         }
     }
}

函数的功能为,每当PG4按下时,则触发外部中断,标志位Start_flag实现0/1互换,此程序可用于某些算法的外部启停中断。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4系列的CubeIDE中配置外部中断,您可以按照以下步骤进行操作: 1. 打开CubeIDE,并创建一个新的工程,选择适合您的STM32F4芯片型号。 2. 在工程文件树中找到 "Core" 文件夹,展开它并双击打开 "stm32f4xx_it.c" 文件。 3. 在 "stm32f4xx_it.c" 文件中,找到 "void EXTIx_IRQHandler(void)" 函数,其中 x 是您要配置的外部中断线对应的数字。例如,如果您要配置外部中断线0,则找到 "void EXTI0_IRQHandler(void)" 函数。 4. 在相应的外部中断处理函数中,您可以编写您的自定义代码来处理外部中断事件。例如,您可以在函数内部添加代码来处理按键按下或触发的其他事件。 5. 在 "stm32f4xx_it.c" 文件中找到 "void EXTIx_IRQHandler(void)" 函数的开头部分,您会看到一些注释和预定义的宏。您可以根据您的需求来配置这些宏。 6. 在配置外部中断之前,您需要先进行GPIO的初始化和配置。您可以在 "main.c" 文件中找到 "MX_GPIO_Init(void)" 函数,并在其中配置外部中断引脚所对应的GPIO。 7. 配置外部中断的触发方式和优先级。您可以在 "main.c" 文件中找到 "MX_NVIC_Init(void)" 函数,并在其中配置外部中断的触发方式和优先级。 8. 最后,编译并下载您的代码到STM32F4芯片中。 请注意,以上步骤仅为一般的配置指南,具体配置方式可能会因您的需求和外部硬件的不同而有所变化。建议您参考ST官方文档和CubeIDE的用户手册来获取更详细的配置信息和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值