2026 / 07 / 22
瑞萨RA8系列教程 | 瑞萨RA8单片机IO中断配置

本文为结合瑞萨e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述瑞萨RA8D1单片机IO中断配置实现的方法。


实现简单的功能:配置一个LED翻转(亮灭)+一个按键(Key)中断,按键按一次,LED翻转一下。

准备工作

开发RA8D1单片机需要提前安装好软件工具,还有准备好RA8板卡以及下载调试器。


下载安装集成开发环境

开发瑞萨RA8系列单片机的工具有很多,常见的主要是:

  • e2 studio一站式服务工具

  • RASC+Keil,或RASC+IAR

推荐大家使用瑞萨官网的e2 studio一站式服务工具。这里大家可以参看我之前分享的文章:

瑞萨RA8系列教程 | 瑞萨RA8开发环境搭建,并点亮一个LED


准备硬件板卡

本教程就使用瑞萨CPKCOR_RA8D1B评估板,这块板卡集成了J-link,我们只需要用一根线连接电脑即可下载调试。

e2s配置按键中断

e2 studio可以理解为包含单片机底层配置工具、编辑器、编译器、调试器等多种功能为一体的一站式服务工具,和其他一些MCU厂商的“可视化配置工具”类似,只需要动动鼠标,就能快速创建瑞萨单片机软件工程。


我们这里配置一个LED翻转(亮灭)+一个按键(Key)中断:按键按一次,LED翻转一下。


1 基于e2s快速创建软件工程模板

打开e2s,文件->新建->瑞萨C/C++项目->Renesas RA:


输入工程名称,比如我们输入RA8D1_KEY:


选择单片机型号,比如R7FA8D1BHEC:


选择Non-TrustZone项目工程:


选择Executable


选择【
Bare Metal-Minimal】,然后点击完成,一个项目模板就创建好了。


2 配置LED+KEY中断

在【Pins】选项栏,选中LED引脚,我们这里PA01,配置为输出模式。


然后,在
IRQ栏目下,选中对于的中断号,我们使用P008作为按键中断,这里就是IRQ12。


在【Stacks】选项栏,新增一个Stack->Input->External lRQ


然后,设置对应属性:


3 添加代码实现按键中断功能

这里,我们只需要在自带的hal_entry.c源文件下添加少许代码,即可实现按键中断:按键KEY按下,LED翻转。

#include "hal_data.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

/* 定义LED翻转 */
#define LED_TOGGLE R_PORT10->PODR ^= 1<<(BSP_IO_PORT_10_PIN_01 & 0xFF)

/*******************************************************************************************************************//** 
* main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function 
* is called by main() when no RTOS is used. 
**********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */

    //中断初始化
    R_ICU_ExternalIrqOpen(&g_external_irq12_ctrl, &g_external_irq12_cfg);
    R_ICU_ExternalIrqEnable(&g_external_irq12_ctrl);

    while(1)
    {    
    }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

/* 按键中断回调函数 */
void key_external_irq_callback(external_irq_callback_args_t *p_args)
{
    /* 判断中断通道 */
    if (12 == p_args->channel)
    {
        LED_TOGGLE;   // 按键KEY按下,LED翻转
    }
}

实现效果:


最后,这样配置,是不是相对以前那种一步一步移植代码更简单?

文件下载
隐私条款

一、接受条款 使用者(也称"您")在访问或使用本网站及其服务时,即已经表示同意并不加修改地接受本《用户协议》、本网站的《隐私声明》、《法律声明》以及其关或相链接的网页和网站的条件和条款的规定。我们强烈建议:在您阅读和接受本《用户协议》时,也应阅读并接受本《用户协议》中所提到《隐私声明》、《法律声明》及其相关或相链接网页或网站所包含的资料,因为《隐私声明》、《法律声明》及其它相关网页或网站可能包含对您适用的进一步规定。(请注意:点击划有底线的词句即可链接到上述《隐私声明》、《法律声明》及其它相关或相链接的网页和网站。

 

二、使用者的资格要求 在本网站中"使用者"指的是浏览、阅读、使用本网站信息或服务的任何个人或组织。本网站的服务仅适用于根据相关法律的规定具有签订有约束力的合同的个人或组织并仅由其使用。本网站的服务不向18周岁以下的个人使用者提供,也不向临时被本网站中止或取消使用者资格的使用者提供。如果使用者不符合本条规定,请停止使用本网站或本网站的服务。

样品
申请

应用
资源

微信