1.概述
外部中斷是單片機(jī)實(shí)時(shí)地處理外部事件的一種內(nèi)部機(jī)制。當(dāng)某種外部事件發(fā)生時(shí),單片機(jī)的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理;中斷處理完畢后.又返回被中斷的程序處,繼續(xù)執(zhí)行下去。
查閱RA2L1說明也可以得知,有些管腳可能會(huì)共用一個(gè)通道。
2.硬件準(zhǔn)備
首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是芯片型號(hào) R7FA2L1AB2DFL 的開發(fā)板。
本篇文章主要介紹如何使用e2studio對(duì)瑞薩單片機(jī)進(jìn)行EXIT檢測(cè)配置,通過按鍵形式以及燈的亮滅形式進(jìn)行演示。
3.新建工程
4.工程模板
5.保存工程路徑
6.芯片配置
本文中使用R7FA2L1AB2DFL來進(jìn)行演示。
7
7.工程模板選擇
8.LED燈配置
LED燈的P104腳配置為輸出。
9.EXIT燈配置
點(diǎn)擊Stacks->New Stack->Driver->Input -> External IRQ Driver on r_icu 。
10.EXIT屬性配置
11.工程文件
查看pin_data.c,可以看到P104的LED管腳P015輸入管腳配置成功。
打開main.c函數(shù),發(fā)現(xiàn)寫了一個(gè)hal_entry ()函數(shù)。
打開hal_entry.c,可以看到在hal_entry函數(shù)內(nèi),注釋著可以在這輸入自己的代碼。
12.R_ICU_ExternalIrqOpen()函數(shù)原型
R_ICU_ExternalIrqOpen()函數(shù)為配置用于外部中斷接口的 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()函數(shù)為配置用于外部中斷接口的 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()函數(shù)進(jìn)行讀取IO口電平狀態(tài),該函數(shù)只能讀取一個(gè)端口的電平。
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.結(jié)果演示
黃色為按鍵波形,藍(lán)色為L(zhǎng)ED輸出波形。
Falling
Rising
Both Edges
Low Level
16.視頻教學(xué)
視頻教學(xué)稍后會(huì)在B站官方賬號(hào)更新,請(qǐng)留意B站視頻更新~
原文標(biāo)題:瑞薩e2studio----EXIT
文章出處:【微信公眾號(hào):RA生態(tài)工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351197
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論