这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【瑞萨RA2E1开发板】:使用外部中断控制板载的LED灯

共2条 1/1 1 跳转至

【瑞萨RA2E1开发板】:使用外部中断控制板载的LED灯

工程师
2025-03-24 17:24:48     打赏

硬件:RA2E1

开发板软件:e2studio Version: 2024-10 (24.10.0)

调试器:J-link V9

一:瑞萨开发板中断知识分享:

瑞萨RA2E1微控制器的中断系统基于ARM Cortex-M23内核,支持嵌套向量中断控制器(NVIC),能够高效处理多种中断源。以下是RA2E1中断系统的简要介绍:

1. 中断类型

RA2E1支持多种中断类型,包括外部中断、定时器中断、串口中断等。外部中断可以通过ICU(Interrupt Control Unit)模块配置,支持上升沿、下降沿或双边沿触发。

2. 中断配置

FSP配置:在瑞萨的FSP(Flexible Software Package)配置工具中,可以通过图形化界面配置中断源、触发方式和优先级。例如,外部中断的配置包括选择引脚、设置触发边沿和分配中断回调函数68。

API调用:配置完成后,可以使用FSP提供的API函数(如R_ICU_ExternalIrqOpen和R_ICU_ExternalIrqEnable)初始化和启用中断。

3. 中断处理

中断服务函数:当中断触发时,NVIC会调用相应的中断服务函数(ISR)。用户可以在ISR中编写处理逻辑,例如读取传感器数据或控制外设78。

优先级管理:RA2E1支持中断优先级配置,高优先级中断可以抢占低优先级中断,确保关键任务及时响应。

4. 实际应用

外部中断:常用于按键检测、传感器信号捕获等场景。例如,配置一个按键引脚为下降沿触发,当按键按下时触发中断并执行相应操作68。

定时器中断:用于周期性任务,如LED闪烁或数据采集。

5. 调试与优化

在调试过程中,可以通过断点调试观察中断触发和执行情况,确保逻辑正确。

如果中断未按预期触发,可能需要检查中断配置、优先级设置以及中断标志清除等问题47。

总结来说,RA2E1的中断系统灵活且功能强大,适用于多种实时控制场景。通过FSP工具和API函数,开发者可以快速配置和优化中断功能,满足具体应用需求。

二:中断的系统框图如下所示:

1.png

三:FSP的配置过程如下所示:

3.1 查看按键所使用的IO口

2.png

3.2 板载LED灯所使用的IO口

3.png

3.3 外部中断配置如下图所示:

四:程序编写:

中断的工作原理:

当中断来临的时候会最先经过 IRQ 寄存器,IRQ 寄存器检测到中断的时候,会向中央处理嵌套向量中断控制器 NVIC 发送中断信号,当 NVIC 检测到中断请求的时候,会将相应的中断服务函数进行挂起。之后将运行的八个寄存器进行压栈,压栈完成之后将中断服务程序进行激活。之后将原先压栈的寄存器取出,继续运行之前的程序。

中断抢占的过程:

当中断来临的时候会最先经过IRQ 寄存器,IRQ 寄存器检测到中断的时候,会向中央处理嵌套向量中断控制器 NVIC 发送中断信号,当 NVIC检测到中断请求的时候,会将相应的中断服务函数进行挂起。之后将运行的八个寄存器进行压栈,堆栈完成之后将中断服务程序进行激活。此时当另一个优先级更高的中断源发生请求的时候,会将相应的中断服务函数进行挂起。之后将当前运行的八个寄存器进行压栈,压栈完成之后将中断服务程序进行激活。当中断服务程序运行完之后会将原先压栈的寄存器取出,之后继续运行之前中断服务的程序。中断服务程序运行完成之后之后将原先压栈的寄存器取出,继续运行之前的程序。

4.1 流程图:

6.png

4.2  程序代码如下所示:

初始化 外部中断

assert(FSP_SUCCESS == err);

/* Enable the external interrupt. */
/* Enable not required when used with ELC or DMAC. */
err =  R_ICU_ExternalIrqEnable(&g_external_irq0_ctrl);
assert(FSP_SUCCESS == err);

中断处理部分:

bsp_io_level_t level = BSP_IO_LEVEL_LOW;
/* Callback function */
void exit0_callback(external_irq_callback_args_t *p_args)
{
/* TODO: add your own code here */
(void) p_args;
if(level)
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_HIGH);
else
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, BSP_IO_LEVEL_LOW);
level=~ level;
}

五:实物测试图如下:

3474f2f792c07ba7eb1956aaa37d2b67 00_00_00-00_00_30.gif

7.png

调试心得:

瑞萨RA2E1:中断应用场景:

按钮/开关控制:当用户按下按钮或切换开关时,可以触发外部中断来响应用户的操作,例如控制LED的亮灭或执行特定功能。这种中断类型常用于用户界面交互,如按键控制设备启动、停止或切换模式。

传感器触发:当传感器检测到特定事件或条件发生时(如温度达到阈值、光线强度变化等),可以触发外部中断来及时处理传感器数据。这种中断类型在环境监测、工业自动化等领域有广泛应用。

中断的触发的模式:

Falling edge 下降沿

·Rising edge 上升沿

Rising and falling edges 上升和下降沿

Low level 低电平

我们可以使用中断部分,用于限位、编码器技术的各个部分;

可以增加板载的调试器,这样更有助于软件代码的开发,我之前使用keil对软件进行编程,这次使用的官方的E2S,而官方的编程工具必须是J-LINK ,而我的开始是V8,发现编程的时候根本链接不上,而这次又不想使用KEIL了,没办法又买了一个V9进行调试,还好这次是买对了,要不这块板子就不好进行学习了,稍后,分享该款开发板其他的学习经验。

视频链接如下所示:

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






关键词: RA2E1     外部     中断    

专家
2025-03-24 20:18:07     打赏
2楼

感谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]