RA2E1两个灯交替闪烁

简介: RA2E1两个灯交替闪烁

昨天照着瑞萨用户手册点亮了红灯。
今天照着大佬的博客,学习一下如何根据点亮另外一个灯。
因为我还不熟,所以这次仍然使用e2studio。

寻找LED位置

瑞萨的用户手册用的是BSP,板子支持包里已经提前写好了。

这次是利用原理图找:

原理图就在CPK-RA2L1_RA2E1设计文件包.zip中。
官网下载链接:https://www.renesas.cn/cn/zh/document/sch/1596866?r=1596846
图中P502和P501分别控制一个LED灯,灯均接地,需要输出高电平才能产生电流,点亮灯泡。
image.png
接下来进入e2studio。
依次双击打开configuration.xml,点击Pins,在Ports菜单中找到P501P502,修改Mode为输出高电平。
image.png
如果是在e2studio中,可以依次点击左上角的“构建”和“调试”。
如果是在keil中打开RASC,需要先在RASC点击"Generate Project Content",再点击“编译”和“下载”。

运行结果:红灯和蓝灯成功点亮。

2c7bcc89c0b1fdda87380c2ff744d93.jpg
我们可以在IDE中分别指定P501和P502单独点亮。即可得到:

  • P501为蓝灯。
  • P502为红灯。

官方的原理图中也对LED灯的颜色做了标注。

编写程序

以下内容引用自群友的博客:https://blog.csdn.net/qq_63922192/article/details/129668320

我们即将用到的函数:
/*R_IOPORT_PinWrite()用于设置IO高低电平
 *传入参数有三个
 *参数一:
    *固定为&g_ioport_ctrl
 *参数二:
    *指定IO口,比如我们需要控制P502,就输入BSP_IO_PORT_05_PIN_02。如果是控制P411,就输入BSP_IO_PORT_04_PIN_11
 *参数三:
    *指定输出的电平,BSP_IO_LEVEL_LOW输出低电平,BSP_IO_LEVEL_HIGH输出高电平
 */
/*R_BSP_SoftwareDelay()用于设置延时时间
 *参数一:
    *设置延时时间长短,是32bit的数据,所以只能输入0-4294967296(正常人应该都不会超过。。)
 *参数二:
    *设置延时单位,BSP_DELAY_UNITS_SECONDS表示单位为秒,BSP_DELAY_UNITS_MILLISECONDS表示ms,BSP_DELAY_UNITS_MICROSECONDS是us
 */

于是得到了控制P502每隔一秒闪一次的代码,将其填入到hal_entry.c中。

while (1)
{
    //将P502设置为低电平
    R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_LOW);
    //延时1s
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
    //将P502设置为高电平
    R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_HIGH);
    //延时1s
    R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
}

因为我的想法是让红灯和蓝灯交替闪烁。
因此需要在佬的代码上改一改。

while (1)
{
    //将P501设置为低电平,P502设置为高电平。
    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);
    //延时0.5s
    R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
    //将P501设置为高电平,P502设置为低电平。
    R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_HIGH);
    R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_LOW);
    //延时0.5s
    R_BSP_SoftwareDelay (500, BSP_DELAY_UNITS_MILLISECONDS);
}

顺利的话,就会看到红灯和蓝灯交替闪烁。

对比一下用户手册上的代码:

R_IOPORT_PinWrite (&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_LOW);//本次
g_ioport.p_api->pinWrite (&g_ioport_ctrl, Leds.p_leds[BSP_LED_LED1], BSP_IO_LEVEL_LOW);//用户手册
个人觉得这次的代码更简单一些。
image.png
群友的博客用的是keil,还用到了多文件编写,这个我还没不会。
这些内容也会成为接下来的几天的学习目标之一,到时再做分享。

出现的问题

上一行说到:顺利的话,就会看到红灯和蓝灯交替闪烁。
但也很有可能不顺利,比如我就遇到了,只有一个灯在闪。
问题可能就是接口不是Output输出模式。需要在Pin Configuration页面中设置P501和P502为输出模式。
image.png
这两个输出模式的区别就是:Output mode(Initial Low)初始状态为低电平;Output mode(Initial High)初始状态为高电平。
如果都设置初始状态为High高电平,则在SystemInit();断点执行完,在hal_entry ();断点执行前的这段时间,板子上的两个灯都会被点亮。
61535a08e125f3a00f6b3ed61168065.jpg

用到的资料

目录
相关文章
|
10月前
|
人工智能 运维 Kubernetes
这家公司使用 MCP,已向企业交付 1000 名数字员工
君润人力是一家科技驱动的人力资源服务公司,专注于为服务业提供一站式人力资源解决方案。通过AI与数字员工技术,公司在招聘、社保等领域实现自动化服务,提升效率并降低成本。同时,君润积极探索MCP协议和Higress网关技术,构建“数字灵工”平台,推动人服行业的智能化转型。
|
设计模式 网络协议 Java
07.迪米特原则介绍
本文详细介绍了迪米特原则(Law of Demeter),包括其定义、核心思想及实际应用。迪米特原则强调类之间应保持低耦合,通过限制对象间的直接交互,减少依赖关系,从而提高代码的可维护性和复用性。文章通过案例分析(如集团公司员工管理和体育课场景)展示了如何遵循该原则优化设计,避免不必要的类依赖。同时探讨了“高内聚、松耦合”的概念及其重要性,并总结了迪米特原则的优点与潜在缺点。最后列举了外观模式、中介者模式等符合迪米特原则的设计模式,帮助读者深入理解其应用场景。
322 18
|
弹性计算 分布式计算 监控
祝贺叠纸新游《无限暖暖》全球开服!阿里云全球基础设施持续护航
祝贺叠纸新游《无限暖暖》全球开服!阿里云全球基础设施持续护航
663 5
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
970 14
|
编解码 计算机视觉
mmseg配置解析 align_corners=False
`align_corners=False` 是图像插值操作中的一个参数,影响输入和输出图像的角点对齐方式。`align_corners=True` 严格对齐角点,而 `align_corners=False` 均匀分布像素点,更适用于保持整体比例关系的任务,如语义分割。
471 0
|
Web App开发
【视频点播】阿里云视频点播如何获取视频播放的URL
展示如何使用阿里云视频点播服务获取播放地址.
35644 0
【视频点播】阿里云视频点播如何获取视频播放的URL
|
缓存 弹性计算 分布式计算
阿里云服务器2核2G、2核4G、4核8G、8核16G收费标准与活动价格参考
阿里云服务器可选配置为1核1G,最高为256核3072G,其中大部分用户购买最多的配置是2核2G、2核4G、4核8G、8核16G,2024年,2核2G配置只要61元/1年,2核4G配置只要199元/1年,4核8G配置只要955.58元/1年,8核16G配置只要1803.17元/1年。本文为大家整理汇总了阿里云服务器2核2G、2核4G、4核8G、8核16G配置的收费标准与活动价格情况,以供参考。
阿里云服务器2核2G、2核4G、4核8G、8核16G收费标准与活动价格参考
|
监控 Unix Java
使用Nohup命令管理后台进程的实用技巧
使用Nohup命令管理后台进程的实用技巧
|
存储 NoSQL 关系型数据库
向量数据库有什么用?
向量数据库是一种特殊类型的数据库,它可以将非结构化数据映射为高维向量,并计算数据之间的相似性。它可以用于查找相似的数据、推荐系统、异常检测和临时存储等应用。目前市场上有一些专门的向量数据库产品,同时也可以使用已有的数据库产品来构建向量数据库。向量数据库的发展前景还不确定,但它已经成为热门技术,并吸引了大量的投资。