概述
本篇文章主要介绍如何使用e2studio对瑞萨单片机进行EXIT检测,之后通过按键形式以及灯的亮灭形式进行演示。
样品申请
https://www.wjx.top/vm/wBbmSFp.aspx#
硬件准备
首先需要准备一个开发板,这里我准备的是芯片型号R7FA4M2AD3CFP的开发板:
开发板
新建工程
工程模板
保存工程路径
芯片配置
本文中使用R7FA4M2AD3CFP来进行演示。
工程模板选择
时钟配置
开发板上的外部高速晶振为12M,需要修改XTAL为12M.
外部中断接口
外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 查阅RA4M2说明也可以得知,有些管脚可能会共用一个通道。
EXIT
板子上有一个按键P104(IRQ1)和2个LED灯。 通过按键进行EXIT检测,通过按键形式以及灯的亮灭形式进行演示。
LED灯配置
LED灯的P301脚配置为输出。
EXIT配置
点击Stacks->New Stack->Driver->Input -> External IRQ Driver on r_icu 。
EXIT属性配置
EXIT属性配置如下。
触发方式如下所示。
工程文件
打开main.c函数,发现写了一个hal_entry ()函数。 打开hal_entry.c,可以看到在hal_entry函数内,注释着可以在这输入自己的代码。
R_ICU_ExternalIrqOpen()函数原型
R_ICU_ExternalIrqOpen()函数为配置用于外部中断接口的 IRQ 输入引脚,配置如下所示。
/* Configure the external interrupt. */
fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq1_ctrl, &g_external_irq1_cfg);
assert(FSP_SUCCESS == err);
R_ICU_ExternalIrqEnable()函数原型
R_ICU_ExternalIrqEnable()函数为在 NVIC 上为指定通道启用外部中断,配置如下所示。
/* Enable the external interrupt. */
/* Enable not required when used with ELC or DMAC. */
err = R_ICU_ExternalIrqEnable(&g_icu_ctrl);
assert(FSP_SUCCESS == err);
EXIT代码
#include "hal_data.h"
FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER
bsp_io_level_t level = BSP_IO_LEVEL_LOW;
/* Callback function */
void exit1_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_03_PIN_01, BSP_IO_LEVEL_HIGH);
else
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_LOW);
level=~ level;
}
void hal_entry(void)
{
/* TODO: add your own code here */
/* Configure the external interrupt. */
fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq1_ctrl, &g_external_irq1_cfg);
assert(FSP_SUCCESS == err);
/* Enable the external interrupt. */
/* Enable not required when used with ELC or DMAC. */
err = R_ICU_ExternalIrqEnable(&g_external_irq1_ctrl);
assert(FSP_SUCCESS == err);
while(1)
{
R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS); // NOLINT100->160
}
#if BSP_TZ_SECURE_BUILD
/* Enter non-secure code */
R_BSP_NonSecureEnter();
#endif
}
最后
以上的代码会在Q_QUN里分享。Q_QUN:615061293。 或者关注『记帖』,持续更新文章和学习资料!
结果演示
黄色为按键波形,红色为LED输出波形。
Falling(下降沿)
Rising(上升沿)
Both Edges(双边)
Low Level(低电平)
审核编辑:汤梓红
-
单片机
+关注
关注
6012文章
44173浏览量
624641 -
瑞萨
+关注
关注
32文章
22230浏览量
85198 -
开发板
+关注
关注
25文章
4618浏览量
95177
发布评论请先 登录
相关推荐
如何使用e2studio对瑞萨单片机进行EXIT检测配置以按键形式以及灯的亮灭形式进行演示?
瑞萨e2studio(6)----EXIT
![<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>e2studio</b>(6)----<b class='flag-5'>EXIT</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
评论