1.概述
外部中断是单片机实时地处理外部事件的一种内部机制。当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。
查阅RA2L1说明也可以得知,有些管脚可能会共用一个通道。
2.硬件准备
首先需要准备一个开发板,这里我准备的是芯片型号 R7FA2L1AB2DFL 的开发板。
本篇文章主要介绍如何使用e2studio对瑞萨单片机进行EXIT检测配置,通过按键形式以及灯的亮灭形式进行演示。
3.新建工程
4.工程模板
5.保存工程路径
6.芯片配置
本文中使用R7FA2L1AB2DFL来进行演示。
7
7.工程模板选择
8.LED灯配置
LED灯的P104脚配置为输出。
9.EXIT灯配置
点击Stacks->New Stack->Driver->Input -> External IRQ Driver on r_icu 。
10.EXIT属性配置
11.工程文件
查看pin_data.c,可以看到P104的LED管脚P015输入管脚配置成功。
打开main.c函数,发现写了一个hal_entry ()函数。
打开hal_entry.c,可以看到在hal_entry函数内,注释着可以在这输入自己的代码。
12.R_ICU_ExternalIrqOpen()函数原型
R_ICU_ExternalIrqOpen()函数为配置用于外部中断接口的 IRQ 输入引脚,配置如下所示。
/* Configure the external interrupt. */
fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq7_ctrl, &g_external_irq7_cfg);
assert(FSP_SUCCESS == err);
13.示例说明
LED灯的P104脚配置为输出。
R_ICU_ExternalIrqOpen()函数为配置用于外部中断接口的 IRQ 输入引脚,配置如下所示。
/* Configure the external interrupt. */
fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq7_ctrl, &g_external_irq7_cfg);
assert(FSP_SUCCESS == err);
14.EXIT代码
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;
}
void hal_entry(void)
{
/* TODO: add your own code here */
/* Configure the external interrupt. */
fsp_err_t err = R_ICU_ExternalIrqOpen(&g_external_irq7_ctrl, &g_external_irq7_cfg);
assert(FSP_SUCCESS == err);
/* Enable the external interrupt. */
/* Enable not required when used with ELC or DMAC. */
err = R_ICU_ExternalIrqEnable(&g_external_irq7_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
}
故可以用R_IOPORT_PinRead()函数进行读取IO口电平状态,该函数只能读取一个端口的电平。
bsp_io_level_t p_port_value_port_151;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_15, &p_port_value_port_151);
15.结果演示
黄色为按键波形,蓝色为LED输出波形。
Falling
Rising
Both Edges
Low Level
16.视频教学
视频教学稍后会在B站官方账号更新,请留意B站视频更新~
原文标题:瑞萨e2studio----EXIT
文章出处:【微信公众号:RA生态工作室】欢迎添加关注!文章转载请注明出处。
-
mcu
+关注
关注
146文章
16939浏览量
350031
发布评论请先 登录
相关推荐
评论