硬件: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函数,开发者可以快速配置和优化中断功能,满足具体应用需求。
二:中断的系统框图如下所示:
三:FSP的配置过程如下所示:
3.1 查看按键所使用的IO口
3.2 板载LED灯所使用的IO口
3.3 外部中断配置如下图所示:
四:程序编写:
中断的工作原理:
当中断来临的时候会最先经过 IRQ 寄存器,IRQ 寄存器检测到中断的时候,会向中央处理嵌套向量中断控制器 NVIC 发送中断信号,当 NVIC 检测到中断请求的时候,会将相应的中断服务函数进行挂起。之后将运行的八个寄存器进行压栈,压栈完成之后将中断服务程序进行激活。之后将原先压栈的寄存器取出,继续运行之前的程序。
中断抢占的过程:
当中断来临的时候会最先经过IRQ 寄存器,IRQ 寄存器检测到中断的时候,会向中央处理嵌套向量中断控制器 NVIC 发送中断信号,当 NVIC检测到中断请求的时候,会将相应的中断服务函数进行挂起。之后将运行的八个寄存器进行压栈,堆栈完成之后将中断服务程序进行激活。此时当另一个优先级更高的中断源发生请求的时候,会将相应的中断服务函数进行挂起。之后将当前运行的八个寄存器进行压栈,压栈完成之后将中断服务程序进行激活。当中断服务程序运行完之后会将原先压栈的寄存器取出,之后继续运行之前中断服务的程序。中断服务程序运行完成之后之后将原先压栈的寄存器取出,继续运行之前的程序。
4.1 流程图:
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; }
五:实物测试图如下:
调试心得:
瑞萨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/