当前位置: 首页 > news >正文

e2studio开发RA4M2(6)----GPIO外部中断(IRQ)配置

e2studio开发RA4M2.6--GPIO外部中断(IRQ)配置

  • 概述
  • 视频教学
  • 样品申请
  • 硬件准备
  • 参考程序
  • 源码下载
  • 新建工程
  • 工程模板
  • 保存工程路径
  • 芯片配置
  • 工程模板选择
  • 时钟设置
  • SWD调试口设置
  • GPIO口配置
  • 按键口配置
  • 中断回调函数
  • 主程序

概述

GPIO(通用输入/输出)引脚作为嵌入式系统的基本接口,可以用于信号输入、输出以及事件检测。GPIO外部中断(IRQ)是一种常见的硬件中断配置,通过在特定引脚上检测信号的变化(例如上升沿或下降沿)来触发中断响应。这种机制在按钮按压、传感器信号输入等场景中尤为常用,可实现低延迟的事件捕获与处理。

最近在瑞萨RA的课程,需要样片的可以加qun申请:925643491。

在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV1PqhAzCEq1/

RA4M2

样品申请

https://www.wjx.top/vm/rCrkUrz.aspx

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。
主控为R7FA4M2AD3CFL

在这里插入图片描述

参考程序

https://github.com/CoreMaker-lab/RA4M2_MINI

https://gitee.com/CoreMaker/RA4M2_MINI

源码下载

新建工程

在这里插入图片描述

工程模板

在这里插入图片描述

保存工程路径

在这里插入图片描述

芯片配置

本文中使用R7FA4M2AD3CFL#AA0来进行演示。

在这里插入图片描述

工程模板选择

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

时钟设置

开发板上的外部高速晶振为12M.

在这里插入图片描述

需要修改XTAL为12M。

在这里插入图片描述

SWD调试口设置

在这里插入图片描述

GPIO口配置

由下图我们可以得知,板子上有1个LED灯,同时需要给高电平才可以点亮,故以P111管脚为例,配置方式如下所示。

在这里插入图片描述

在e2studio中可以直接设置P111为输出口。

在这里插入图片描述
同步到工程。
在这里插入图片描述

按键口配置

由下图我们可以得知,按键在P000管脚,并且有一个上拉。

在这里插入图片描述
在“New Stack”下选择Input > External IRQ (r_icu)。

在这里插入图片描述

模块配置如下所示。
● Name:g_external_irq6,这是该外部中断的名称。
● Channel:选择了6通道。
● Trigger:触发方式设置为Rising(上升沿触发),即信号上升时触发中断。
● Digital Filtering:未启用数字滤波(Not Supported)。
● Digital Filtering Sample Clock:由于数字滤波未启用,因此该项也未支持。
● Callback:指定了回调函数external_irq6_callback。当中断触发时,将调用此函数处理具体逻辑。
● Pin Interrupt Priority:设置为Priority 2,表示该中断的优先级为2。
● IRQ06:映射到引脚P000,即该中断信号通过引脚P000触发。

在这里插入图片描述
在这里插入图片描述

同步到工程。

在这里插入图片描述

中断回调函数

● external_irq6_callback函数是外部中断的回调函数,当中断触发时,icu_irq_isr中断服务程序会调用此函数。
● g_external_irq6_complete变量在每次中断时切换状态(如果是0则变1,如果是1则变0)。

bool g_external_irq_complete =0;
/* Called from icu_irq_isr */
void external_irq6_callback (external_irq_callback_args_t * p_args)
{(void) p_args;g_external_irq_complete = !g_external_irq_complete;
}

在这里插入图片描述

主程序

● 调用R_ICU_ExternalIrqOpen函数初始化外部中断模块g_external_irq6。g_external_irq6_ctrl和g_external_irq6_cfg是配置外部中断的控制结构体和配置结构体。
● 如果初始化成功,err会返回FSP_SUCCESS,否则程序会停止(通过assert进行错误检测)。

    fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq6_ctrl, &g_external_irq6_cfg);assert(FSP_SUCCESS == err);

● 启用外部中断,使其可以响应触发事件。
● assert用于确认操作成功,否则程序会停止。

    err = R_ICU_ExternalIrqEnable(&g_external_irq6_ctrl);assert(FSP_SUCCESS == err);

在这里插入图片描述
主循环中根据g_external_irq_complete的状态来控制GPIO引脚的高低电平。

    while(1){if(g_external_irq_complete){R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_11, BSP_IO_LEVEL_HIGH);}else{R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_11, BSP_IO_LEVEL_LOW);}}

在这里插入图片描述

http://www.dtcms.com/a/313457.html

相关文章:

  • 算法题(181):最大直方矩形面积
  • datasets库 的map方法num_proc=16并行踩坑
  • Java 中的 final 关键字有哪些用法?
  • C++ 虚函数相关问题 **
  • 基于云模型的模糊综合风险评估Matlab代码
  • 网关与路由器的区别
  • access系统调用及示例
  • 延迟任务方案-DelayQueue
  • SpringBoot 2.x 升 3.x 避坑指南:企业级项目的实战问题与解决方案
  • Celery-分布式任务队列
  • MySQL深度理解-MySQL锁机制
  • 数据结构学习(day01)
  • 第八章:进入Redis的SET的核心
  • Android系统模块编译调试与Ninja使用指南
  • 【数据分享】各省粮食外贸依存度、粮食波动率等粮食相关数据合集(2011-2022)(获取方式看文末)
  • 【MATLAB】(六)多项式的创建与四则运算
  • python的高校奖助学金系统
  • 23 Active Directory攻击与防护策略解析
  • 编译旧版本的electron内核
  • SpringBoot之整合MyBatisPlus
  • Nvidia Orin DK 刷机CUDA TensorRT+硬盘扩容+ROS+Realsense+OpenCV+Ollama+Yolo11 一站式解决方案
  • 从“配置地狱”到“云端乐园”——Nacos 如何成为分布式微服务配置中心的“定海神针”
  • 数组和指针的关系
  • 操作系统——读者写者问题
  • KNX协议介绍
  • Nvidia Orin + RealSense D435i 与3D地图实现导航
  • Ubuntu系统VScode实现opencv(c++)视频的处理与保存
  • [硬件电路-129]:模拟电路 - 继电器的工作原理、关键指标、常用芯片与管脚定义
  • SpringAI的使用
  • Socket编程——TCP协议