芯查查logo
  • 物料选型
  • 数据服务
    1. 新品推荐
    2. 查替代料
    3. 丝印反查
    4. 查品牌
    5. PCN/PDN
    6. 查代理
    7. 数据合作
  • 应用方案
  • SaaS产品
      SaaS产品
    1. 供应链波动监测预警
    2. 半导体产业链地图
    3. 智能BOM管家
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
正在使用账号登录iCEasy商城
meiyao
RA2L1GPIO输入和输出操作

RA2L1的GPIO(通用输入/输出端口)支持输入和输出功能,这使得它能够通过引脚输出高低电平或读入引脚的状态(高电平或低电平)。

 

 一、GPIO输出 配置引脚为输出模式:

需要将目标引脚配置为输出模式。这通常通过特定的寄存器或API函数来实现。 

在RA2L1中,可以使用瑞萨提供的API函数,R_IOPORT_PinWrite,来设置引脚的输出电平。

 

设置输出电平:

使用R_IOPORT_PinWrite函数,可以指定引脚输出高电平或低电平。 

要使P501引脚输出高电平,调用R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_HIGH)。

 

 延时操作:

在实际应用中,可能需要在改变引脚电平后添加延时,以实现特定的功能LED闪烁。 

可以使用瑞萨提供的延时函数,R_BSP_SoftwareDelay,来实现延时。 

 

二、GPIO输入 配置引脚为输入模式:

与输出模式类似,首先需要将目标引脚配置为输入模式。 这通常也通过特定的寄存器或API函数来实现。 

读取引脚状态:使用相应的API函数,可以读取引脚的当前状态(高电平或低电平)。 在RA2L1中,可以使用rt_pin_read函数来读取引脚状态。 

中断处理:当引脚状态发生变化时,可以配置中断来触发特定的处理函数。 这使得程序能够在引脚状态变化时立即做出响应。 

 

三、实际应用示例 LED闪烁:通过将引脚配置为输出模式,并交替设置其输出为高电平和低电平,可以实现LED的闪烁效果。 

可以使用以下代码实现LED1和LED2的交替闪烁:

 

while(1) { R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_HIGH); R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS); R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_LOW); R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_HIGH); R_BSP_SoftwareDelay(100, BSP_DELAY_UNITS_MILLISECONDS); R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_LOW); } 

按键输入:通过将引脚配置为输入模式,并读取其状态,可以实现按键输入的检测。 

可以使用以下代码来检测按键的按下并控制LED的点亮和熄灭: 

void irq_callback_test(void *args) { rt_kprintf("IRQ triggered\n"); static int out; rt_uint32_t led2_pin = rt_pin_get("P501"); out = rt_pin_read(led2_pin) ? PIN_LOW : PIN_HIGH; if (PIN_LOW == out) { rt_kprintf("LED2 off\n"); rt_pin_write(led2_pin, PIN_HIGH); } else { rt_kprintf("LED2 on\n"); rt_pin_write(led2_pin, PIN_LOW); } } void icu_sample(void) { rt_uint32_t pin = rt_pin_get("P004"); rt_kprintf("pin number : 0x%04X\n", pin); rt_err_t err = rt_pin_attach_irq(pin, PIN_IRQ_MODE_RISING, irq_callback_test, RT_NULL); if (RT_EOK != err) { rt_kprintf("attach irq failed.\n"); } err = rt_pin_irq_enable(pin, PIN_IRQ_ENABLE); if (RT_EOK != err) { rt_kprintf("enable irq failed.\n"); } } MSH_CMD_EXPORT(icu_sample, icu sample);

四、原理图

 

按键:

LED:

五、实现效果:

版块: 瑞萨电子
2025/03/24 21:56
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
学而思可多编程掌机改装2PCB设计翻车实录:我踩过的5个大坑,每个都值一万块从0到1学PCB:硬件工程师Layout实战避坑指南从0到1做硬件:智能硬件产品经理全流程实战指南《图解功率半导体》书评
热门版块
查看更多
萤火工场
单片机/MCU论坛
电子元器件
问型号
飞腾
开源硬件项目
每日打卡
电子DIY
维修技术交流
抄图联盟

6

收藏

分享

微信扫码
分享给好友

评论