瑞萨e2studio(3)----GPIO输入检测

63 篇文章 103 订阅

概述

本篇文章主要介绍如何使用e2studio对瑞萨单片机进行GPIO输出,并以LED显示。
需要样片的可以加qun申请:615061293 。

样品申请

https://www.wjx.top/vm/wBbmSFp.aspx#

视频教学

听不到声音的请点击跳转进行观看。

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

瑞萨e2studio(6)----GPIO输入检测

csdn课程

课程更加详细。
https://edu.csdn.net/course/detail/36131

源码下载

https://download.csdn.net/download/qq_24312945/81784908

硬件准备

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

开发板

在这里插入图片描述

新建工程

在这里插入图片描述

工程模板

在这里插入图片描述

保存工程路径

在这里插入图片描述

芯片配置

本文中使用R7FA2L1AB2DFL来进行演示。
在这里插入图片描述

工程模板选择

在这里插入图片描述

GPIO口配置

由下图我们可以得知,板子上有2个LED灯,同时需要给高电平才可以点亮,故以P301和P302管脚为例。
在这里插入图片描述

按键口配置

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

按键口&Led配置

案例:当按下按键P104,P301亮,否则P301灭。
在这里插入图片描述
在这里插入图片描述

R_IOPORT_PortRead()函数原型

fsp_err_t R_IOPORT_PortRead	(	ioport_ctrl_t *const 	p_ctrl,
bsp_io_port_t 	port,
ioport_size_t * 	p_port_value 
)	

说明:
Reads the value on an IO port. Implements ioport_api_t::portRead.

The specified port will be read, and the levels for all the pins will be returned. Each bit in the returned value corresponds to a pin on the port. For example, bit 7 corresponds to pin 7, bit 6 to pin 6, and so on.

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

ioport_size_t p_port_value_port_104; 
R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_01, &p_port_value_port_104);

R_IOPORT_PinRead()函数原型


fsp_err_t R_IOPORT_PinRead	(	ioport_ctrl_t *const 	p_ctrl,
bsp_io_port_pin_t 	pin,
bsp_io_level_t * 	p_pin_value 
)		

说明:
Reads the level on a pin. Implements ioport_api_t::pinRead.

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

bsp_io_level_t p_port_value_port_104_1;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, &p_port_value_port_104_1);


由上述可以得知,R_IOPORT_PortRead完全可以替代R_IOPORT_PinRead。

在这里插入图片描述

代码

在hal_entry()中添加如下。

#include "hal_data.h"

FSP_CPP_HEADER
void R_BSP_WarmStart(bsp_warm_start_event_t event);
FSP_CPP_FOOTER

/*******************************************************************************************************************//**
 * main() is generated by the RA Configuration editor and is used to generate threads if an RTOS is used.  This function
 * is called by main() when no RTOS is used.
 **********************************************************************************************************************/
void hal_entry(void)
{
    /* TODO: add your own code here */
    fsp_err_t      err;
    /* Initialize the IOPORT module and configure the pins
     * Note: The default pin configuration name in the RA Configuraton tool is g_bsp_pin_cfg */
    err = R_IOPORT_Open(&g_ioport_ctrl, &g_bsp_pin_cfg);
    /* Handle any errors. This function should be defined by the user. */
    assert(FSP_SUCCESS == err);
    ioport_size_t p_port_value_port_104;
    bsp_io_level_t p_port_value_port_104_1;
    while(1)
    {

//     R_IOPORT_PortRead(&g_ioport_ctrl, BSP_IO_PORT_01, &p_port_value_port_104);
//     if(p_port_value_port_104 & 0x0010)
//         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_LOW);
//     else
//         R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_HIGH);

        R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_04, &p_port_value_port_104_1);
        if(p_port_value_port_104_1)//BSP_IO_LEVEL_HIGH 没按下
            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_LOW);
        else
            R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_HIGH);
    }
#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}
  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记帖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值