e2studio开发RA0E1(2)---GPIO输入检测

10 篇文章 0 订阅

概述

最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:925643491。
本篇文章主要介绍如何使用e2studio对瑞萨单片机进行GPIO输入检测。

硬件准备

首先需要准备一个开发板,这里我准备的是芯片型号R7FA0E1073CFJ的开发板:
在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV1wM4m1o7de/

e2studio开发RA0E1(2)----GPIO输入检测

样品申请

https://www.wjx.top/vm/rCrkUrz.aspx

源码下载

https://download.csdn.net/download/xinzuofang/89288857

新建工程

在这里插入图片描述

工程模板

在这里插入图片描述

保存工程路径

在这里插入图片描述

芯片配置

本文中使用R7FA0E1073CFJ来进行演示。

在这里插入图片描述

工程模板选择

在这里插入图片描述

时钟设置

开发板上的外部高速晶振为8M.

在这里插入图片描述

需要修改XTAL为8M。

在这里插入图片描述

GPIO口配置

由下图我们可以得知,板子上有3个LED灯,同时需要给高电平才可以点亮,故以P013和P014管脚为例,配置方式如下所示。

在这里插入图片描述
在e2studio中可以直接设置P013和P014为输出口。
在这里插入图片描述

按键口配置

由下图我们可以得知,按键在P015管脚,并且有一个上拉。
在这里插入图片描述

在e2studio中可以直接设置P015为输入口。

在这里插入图片描述

按键口&Led配置

案例:当按下按键P015,P013亮,P014灭,否则P013灭,P014亮。

R_IOPORT_PortRead()函数原型

该函数用于读取IO端口的值。指定的端口将被读取,所有引脚的电平将被返回。返回值中的每一位对应于端口上的一个引脚,例如,位7对应引脚7,位6对应引脚6,以此类推。
在这里插入图片描述

故可以用R_IOPORT_PortRead()函数进行读取IO口电平状态,该函数是把一个PORT口的16个端口一起读取出来。

ioport_size_t p_port_value_port_0; 
R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_00, &p_port_value_port_0);

R_IOPORT_PinRead()函数原型

在这里插入图片描述

故可以用R_IOPORT_PinRead()函数进行读取IO口电平状态,该函数只能读取一个端口的电平。

bsp_io_level_t p_port_value_pin_015;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_15, &p_port_value_pin_015);

代码

在hal_entry()中添加如下。

void hal_entry(void)
{
    /* TODO: add your own code here */
    ioport_size_t p_port_value_port_00;
    bsp_io_level_t p_port_value_pin_015;
    R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_00, &p_port_value_port_00);
    while(1)
    {
//     R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_00, &p_port_value_port_00);
//     if(p_port_value_port_00 & 0x8000)
//     {
//         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_13, BSP_IO_LEVEL_LOW);
//         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_14, BSP_IO_LEVEL_HIGH);
//     }
//     else
//     {
//         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_14, BSP_IO_LEVEL_LOW);
//         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_13, BSP_IO_LEVEL_HIGH);
//     }
        R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_15, &p_port_value_pin_015);
        if(p_port_value_pin_015)//BSP_IO_LEVEL_HIGH 没按下
        {
             R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_13, BSP_IO_LEVEL_LOW);
             R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_14, BSP_IO_LEVEL_HIGH);
        }
        else
        {
             R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_14, BSP_IO_LEVEL_LOW);
             R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_13, BSP_IO_LEVEL_HIGH);
        }
    }

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}
  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值