瑞萨e2studio笔记——gpio输入输出

gpio输出:

一.第一步搭建工程

二.打开e2studio配置GPIO

任务:点亮两个led灯

根据外设板图得知,板子上的led灯需要高电平才可以点亮,故假设以P401和P404为例。

1.在e2studio中可以直接设置p401和p404为高电平输出模式。

可以用R_IOPORT_PinWrite()和R_IOPORT_PortWrite()两个函数进行配置高电平。

R_IOPORT_PinWrite()   特点:只能配置一个引脚

R_IOPORT_PinWrite()函数原型
fsp_err_t R_IOPORT_PinWrite(
                            ioport_ctrl *const p_ctrl,
                            bsp_io_port_pin_t pin,
                            bsp_io_level_t level                                
                            )
Sets a pin's output either high or low.Implements ioport_api_t::pinWrite.
Return values
FSP_SUCCESS  //写入成功
FSP_ERR_INVALID_ARGUMENT //pin和level无效
FSP_ERR_NOT_OPEN //模块尚未打开
ESP_ERR_ASSERTION //空指针
note:
这个函数对于不同的引脚是可重入的,可以在函数上直接修改引脚
例子:
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_01, BSP_IO_LEVEL_HIGH);
可以直接在函数上修改为
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH);

R_IOPORT_PortWrite()   特点:是对一个Port的所有Pin脚进行写操作

R_IOPORT_PorWrite()
fsp_err_t R_IOPORT_PortWrite(
                                ioport_ctrl_t *const p_ctrl,
                                bsp_io_port_t  port,
                                ioport_size_t  value,
                                ioport_size_t  mask
                            )
Writes to multiple pins on a port,Implements ioport_api_t::porWrite.
输入值将被写入指定的端口,value参数中的每个位对应端口上的一个位,以此类推,掩码参数中的每一个位对应端口上的一个引脚。
只有掩码设置中对应的位才会被更新,例如,value=0xFFFF,mask=0x0003只会产生0位和1位更新
return value
FSP_SUCCESS  //写入成功
FSP_ERR_INVALID_ARGUMENT //端口或者掩码无效
FSP_ERR_NOT_OPEN //模块尚未打开
ESP_ERR_ASSERTION //空指针

note:
这个函数对于不同的端口是可以重入的,这个函数使用PCNTR3寄存器修改端口上指定引脚的电平
例子:
 //0x0002为设定值,0x00ff为mark,即需要开启的管脚
R_IOPORT_PortWrite(&g_ioport_ctrl, BSP_IO_PORT_03, 0x0002, 0x00ff);

gpio输入:

一.第一步搭建工程

二.打开e2studio配置GPIO

任务:按下key键(假设P104),led(假设p301亮),否则led(假设pin301灭)

由板子图得知,板子上有led(p301),分析得出需要给一个高电平,才能是led亮

由于前面的按键key有一个上拉电阻,所以必须给key一个低电平输入。

主要逻辑:

led灯需要高电平才能亮,当我们按下key键之后,key为低电平输入,

if(p_port_value_port_104&0x0010), 两者相与0的时候,led点亮// 0010为灯的位

else ,两者相与为1的时候,按键为高电平,没有按下,led熄灭。

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。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
瑞萨e2 studio io是一款用于瑞萨电子设备开发的集成开发环境(IDE)工具。它提供了丰富的功能和工具,帮助开发人员更轻松地进行软件开发和调试。 首先,瑞萨e2 studio io支持多种编程语言和开发工具,包括C,C++和汇编语言。这意味着开发人员可以使用他们喜欢的编程语言进行开发,而无需学习新的语言。 其次,瑞萨e2 studio io提供了强大的调试功能。开发人员可以使用单步执行,断点,变量监视等功能来跟踪代码的执行过程,帮助他们快速定位和解决问题。此外,它还提供了性能分析工具,帮助开发人员优化代码的执行效率。 除了调试功能,瑞萨e2 studio io还提供了丰富的开发工具。例如,它包含了一个代码生成器,可以自动生成一些常见的代码片段,加快开发速度。它还支持集成版本控制系统,方便多人协作开发。 最后,瑞萨e2 studio io还与其他瑞萨产品和平台集成,如RTOS(实时操作系统)和MCU(微控制器)。这使得开发人员可以更加方便地在不同的平台上进行开发,并且可以从其他产品和平台中受益。 总之,瑞萨e2 studio io是一个功能强大的集成开发环境,为瑞萨电子设备的开发人员提供了一站式的开发解决方案。它通过提供丰富的功能和工具,帮助开发人员更高效地进行软件开发和调试,并与其他产品和平台集成,提供更好的开发体验。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飞赴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值