e2studio开发RA2E1.4--GPIO输出
- 概述
- 视频教学
- 样品申请
- 硬件准备
- 参考程序
- 源码下载
- 新建工程
- 工程模板
- 保存工程路径
- 芯片配置
- 工程模板选择
- 时钟设置
- GPIO口配置
- R_IOPORT_PinWrite()函数原型
- R_IOPORT_PortWrite()函数原型
- 代码
概述
本篇文章主要介绍如何使用e2studio对瑞萨单片机进行GPIO输出,并以LED显示。
最近在瑞萨RA的课程,需要样片的可以加qun申请:925643491。
视频教学
https://www.bilibili.com/video/BV1D9PQeaECa/
e2studio开发RA2E1(4)----GPIO输出
样品申请
https://www.wjx.top/vm/rCrkUrz.aspx
硬件准备
首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。
主控为R7FA2E1A72DFL#AA0
参考程序
https://github.com/CoreMaker-lab/RA2E1
https://gitee.com/CoreMaker/RA2E1
源码下载
https://download.csdn.net/download/xinzuofang/90337839
新建工程
工程模板
保存工程路径
芯片配置
本文中使用R7FA2E1A72DFL#AA0来进行演示。
工程模板选择
时钟设置
开发板上的外部高速晶振为12M.
需要修改XTAL为12M。
GPIO口配置
由下图我们可以得知,板子上有4个LED灯,同时需要给高电平才可以点亮,故以P913、P914、P208、P111管脚为例,配置方式如下所示。
在e2studio中可以直接设置P913、P914、P208、P111为输出口。
R_IOPORT_PinWrite()函数原型
故可以用R_IOPORT_PinWrite()函数进行配置,配置高电平如下所示。
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_09_PIN_13, BSP_IO_LEVEL_HIGH);
R_IOPORT_PortWrite()函数原型
R_IOPORT_PortWrite()函数是对一个Port的所有Pin脚进行写操作。
/*向端口BSP_IO_PORT_09的第13写入1,14位写入0
* BSP_IO_PORT_09 是指定的端口。
* 0x6000 是要写入的值,其中位13设置为1(0x2000 在二进制表示中为 0010 0000 0000 0000)。
* 0x6000 是掩码,表示要更新的位是第13位和第14位(0x6000 在二进制表示中为 0110 0000 0000 0000)。此操作将位13设置为1,并清除位14。
*/
R_IOPORT_PortWrite(&g_ioport_ctrl, BSP_IO_PORT_09, 0x2000, 0x6000);
R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
代码
在hal_entry()中添加如下。
while(1)
{
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_09_PIN_13, BSP_IO_LEVEL_HIGH);
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_09_PIN_14, BSP_IO_LEVEL_HIGH);
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_HIGH);
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_11, BSP_IO_LEVEL_HIGH);
// R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
//
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_09_PIN_13, BSP_IO_LEVEL_LOW);
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_09_PIN_14, BSP_IO_LEVEL_LOW);
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_02_PIN_08, BSP_IO_LEVEL_LOW);
// R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_11, BSP_IO_LEVEL_LOW);
// R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
/*向端口BSP_IO_PORT_09的第13写入1,14位写入0
* BSP_IO_PORT_09 是指定的端口。
* 0x2000 是要写入的值,其中位13设置为1(0x2000 在二进制表示中为 0010 0000 0000 0000)。
* 0x6000 是掩码,表示要更新的位是第13位和第14位(0x6000 在二进制表示中为 0110 0000 0000 0000)。
*/
R_IOPORT_PortWrite(&g_ioport_ctrl, BSP_IO_PORT_09, 0x2000, 0x6000);
R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
/*向端口BSP_IO_PORT_09的第13写入0,14位写入1
* BSP_IO_PORT_09 是指定的端口。
* 0x4000 是要写入的值,其中位14设置为1(0x4000 在二进制表示中为 0100 0000 0000 0000)。
* 0x6000 是掩码,表示要更新的位是第13位和第14位(0x6000 在二进制表示中为 0110 0000 0000 0000)。
*/
R_IOPORT_PortWrite(&g_ioport_ctrl, BSP_IO_PORT_09, 0x4000, 0x6000);
R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
}