成都私人做网站建设的公司,大兴网站建设报价,企业网站相关案例,重庆网站设计制作价格e2studio开发RA4M2.6--GPIO外部中断#xff08;IRQ#xff09;配置 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置GPIO口配置按键中断配置中断回调函数主程序 概述
GPIO#xff08;通用输入/输出IRQ配置 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置GPIO口配置按键中断配置中断回调函数主程序 概述
GPIO通用输入/输出引脚作为嵌入式系统的基本接口可以用于信号输入、输出以及事件检测。GPIO外部中断IRQ是一种常见的硬件中断配置通过在特定引脚上检测信号的变化例如上升沿或下降沿来触发中断响应。这种机制在按钮按压、传感器信号输入等场景中尤为常用可实现低延迟的事件捕获与处理。
最近在瑞萨RA的课程需要样片的可以加qun申请925643491。 视频教学
https://www.bilibili.com/video/BV1dANAeKEjm/ e2studio开发RA4M2(6)----GPIO外部中断IRQ配置 样品申请
https://www.wjx.top/vm/rCrkUrz.aspx
硬件准备
首先需要准备一个开发板这里我准备的是自己绘制的开发板需要的可以进行申请。 主控为R7FA4M2AD3CFL#AA0 参考程序
https://github.com/CoreMaker-lab/RA2E1
https://gitee.com/CoreMaker/RA2E1
源码下载
新建工程 工程模板 保存工程路径 芯片配置
本文中使用R7FA4M2AD3CFL#AA0来进行演示。
工程模板选择 时钟设置
开发板上的外部高速晶振为12M. 需要修改XTAL为12M。 SWD调试口设置 GPIO口配置
由下图我们可以得知板子上有3个LED灯同时需要给高电平才可以点亮故以P002、P103、P104管脚为例配置方式如下所示。 在e2studio中可以直接设置P103、P104为输出口。 按键中断配置
由下图我们可以得知按键在P111、P112、P013管脚并且有一个上拉,这里配置P111按键。 在“New Stack”下选择Input External IRQ (r_icu)。 模块配置如下所示。 ● Nameg_external_irq4这是该外部中断的名称。 ● Channel选择了4通道。 ● Trigger触发方式设置为Rising上升沿触发即信号上升时触发中断。 ● Digital Filtering未启用数字滤波Not Supported。 ● Digital Filtering Sample Clock由于数字滤波未启用因此该项也未支持。 ● Callback指定了回调函数external_irq4_callback。当中断触发时将调用此函数处理具体逻辑。 ● Pin Interrupt Priority设置为Priority 2表示该中断的优先级为2。 ● IRQ06映射到引脚P000即该中断信号通过引脚P111触发。 中断回调函数
● external_irq4_callback函数是外部中断的回调函数当中断触发时icu_irq_isr中断服务程序会调用此函数。 ● g_external_irq4_complete变量在每次中断时切换状态如果是0则变1如果是1则变0。
bool g_external_irq_complete 0;
/* Called from icu_irq_isr */
void external_irq4_callback (external_irq_callback_args_t * p_args)
{(void) p_args;g_external_irq_complete !g_external_irq_complete;
}主程序
● 调用R_ICU_ExternalIrqOpen函数初始化外部中断模块g_external_irq4。g_external_irq4_ctrl和g_external_irq4_cfg是配置外部中断的控制结构体和配置结构体。 ● 如果初始化成功err会返回FSP_SUCCESS否则程序会停止通过assert进行错误检测。 fsp_err_t err R_ICU_ExternalIrqOpen(g_external_irq4_ctrl, g_external_irq4_cfg);assert(FSP_SUCCESS err);● 启用外部中断使其可以响应触发事件。 ● assert用于确认操作成功否则程序会停止。 err R_ICU_ExternalIrqEnable(g_external_irq4_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_03, BSP_IO_LEVEL_HIGH);R_IOPORT_PinWrite(g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);}else{R_IOPORT_PinWrite(g_ioport_ctrl, BSP_IO_PORT_01_PIN_03, BSP_IO_LEVEL_LOW);R_IOPORT_PinWrite(g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);}}