【致敬未来的攻城狮计划】连续打卡第7天+瑞萨RA2E1点亮LED
开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(http://yyds.recan-li.cn)和 瑞萨MCU (瑞萨电子 (Renesas Electronics Corporation) ) 联合发起的「 致敬未来的攻城狮计划 」的第 7 天,点击查看活动计划详情 (https://bbs.csdn.net/topics/613916237)!
对于从事电子方面开发的技术工程师来说,跑马灯大概是最简单的例子,就类似于每种编程语言中程序员接触的第一个程序 Hello World 一样,所以这个例子就从跑马灯开始。让它定时地对 LED 进行更新(亮或灭)。
用自家的IDE会更容易上手一些。所以我选择了e2studio。
新建项目
新建一个瑞萨RA的项目
如果没有RA,则需要在“帮助”菜单下安装设备。
选择合适的FSP
有些FSP的board列表是没有RA2E1板子的。需要导入合适的板级支持包BSP。
BSP下载地址:CPK-RA2L1 - RA2L1 MCU 群组中国本地评估板 | Renesas
点击“帮助”,在二级菜单中选择“关于e2studio”,在新窗口中选择“安装细节”,按图中顺序打开目录。
然后将BSP压缩包内容解压到目录中,一级目录有重名文件夹“internal”,如果是第一次安装,win环境下不会报重复文件的提示,如果有,覆盖即可。
回到上一步中到“新建项目”,项目名称随便写一个,然后会到这个界面。
如果BSP安装成功,则在对应版本的FSP下,board菜单会有CPK-RA2E1开头的选项。
可以选择CPK-RA2E1开头的选项,也可以选择第一个选项“Any Device”。
以下三段是瑞萨产品手册的指示:
- 对于小型动手实验,请选择“Executable”(可执行文件)和“No RTOS”(无 RTOS),然后单击“下一步”。
- 这将打开“Project Template Selection”(项目模板选择)页面,可以在其中选择初始项目内容的模板。 项目模板可能包含多个条目;至少包括适合所选电路板/器件组合的板级支持包。有些模板甚至包括一个完整 的示例项目,但“Project Configurator”(项目配置器)将仅显示与您在先前屏幕上所做选择匹配的模板。在 本例中,选择“Bare Metal – Minimal”(裸机 – 最小化)条目,以加载评估板的板级支持包。单击“完成”。完成项目的配置。
- “Project Configurator”(项目配置器)将关闭并在最后一步中创建项目所需的所有文件。完成此后处理 后,将出现一个对话框,询问您是否要打开“FSP Configuration”(FSP 配置)透视图。选择“Open Perspective”(打开透视图)。
开始编写
不要修改main.c,要修改hal_entry.c
获取所有自动生成的文件之后,接下来查看创建的内容。 IDE 左侧的“Project Explorer
”(项目资源管理器)列出了当前 包含的所有内容。ra_gen
文件夹保存通道号等配置集。src 目录包 含一个名为 hal_entry.c
的文件。这是稍后要编辑的文件。请注 意,尽管在 ra_gen 文件夹中有一个名为 main.c
的文件,但用户 代码必须转到 hal_entry.c
中。否则,如果您在 FSP 配置器中进 行修改并重新创建项目内容,在 main.c 中的更改会丢失,因为每次单击“Generate Project Content
”(生成项目内容)时,都将覆盖该文件。
该项目还包含几个名称中带有“ra
”或“fsp
”的目录,其中 包含 FSP
的源文件、包含文件和配置文件。通常的规则是,不得 修改这些文件夹(和子文件夹)的内容。其中包含由配置器生成 的文件,在此所做的任何更改都将在下次生成或刷新项目内容时 丢失。用户可编辑的源文件是直接位于 \src
文件夹或您添加的任 何其他文件夹为根目录中的文件。
在common_data.c中, 写有 I/O 端口驱动程序实例 g_ioport
const ioport_instance_t g_ioport = { .p_api = &g_ioport_on_ioport, .p_ctrl = &g_ioport_ctrl, .p_cfg = &g_bsp_pin_cfg, };
g_ioport_on_ioport
是一个结构体,用于声明端口可能执行的操作,将分配给 g_ioport
实例 的 API 指针。将鼠标悬停在该结构体上,可以轻松查看其中的内容,此结构体显示了其成员之一 (.pinWrite
) 是指向引脚写入函数的指针。
根据官方文档的指示,要点量led灯,需要这行代码:
g_ioport.p_api->pinwrite (&g_ioport_ctrl, pin, BSP_IO_LEVEL_LOW);
其中,g_ioport_ctrl是一个结构体。
/** IOPORT private control block. DO NOT MODIFY. Initialization occurs when R_IOPORT_Open() is called. */
/** IOPORT 私有控制块。不要修改。初始化发生在调用 R_IOPORT_Open() 时。 */
typedef struct st_ioport_instance_ctrl
{uint32_t open;void const * p_context;
} ioport_instance_ctrl_t;
pin显然不是官方提供的对象
接下来我们需要自行修改
BSP_IO_LEVEL_LOW是一个宏,表示低电平
按Ctrl+Shift+T
,可以搜索全局变量。
/** Levels that can be set and read for individual pins */
/** 可以为各个引脚设置和读取的电平 */
typedef enum e_bsp_io_level
{BSP_IO_LEVEL_LOW = 0, ///< LowBSP_IO_LEVEL_HIGH ///< High
} bsp_io_level_t;
对于BSP_IO_LEVEL_LOW
和BSP_IO_LEVEL_HIGH
,使用了枚举来进行存储,因此第四行中的BSP_IO_LEVEL_HIGH
不需要手动赋值,默认升序。
获取灯泡端口
接下来我们可以查阅官方的原理图,获取灯泡对应的端口,下载链接:
官方:https://www.renesas.cn/cn/zh/document/sch/1596866?r=1596841
CSDN:https://download.csdn.net/download/m0_49303993/87624323
官方文档给的样例是使用FSP。
创建类型为 bsp_leds_t
的结构体(在 board_leds.h
中声明)并为其分配在 board_leds.c
中定义的全局 BSP 结构体 g_bsp_leds
即可解决问题。这两个文件均位于项目的 ra\board\ra2e1_cpk
文件夹内。因此,以下两行代码足以获取有关评估板上 LED 的信息:
extern bsp_leds_t g_bsp_leds;
bsp_leds_t Leds = g_bsp_leds;
现在,可以使用 LED 结构体来访问电路板上的所有 LED,并使用以下语句点亮红色 LED(将端口设置为 低电平将点亮 LED,将端口设置为高电平则将熄灭 LED):
此语句后需要有第二条语句,用于将其引脚设置为高电平以熄灭 用户 LED。 最后,需要提供一段延时以使 LED 以用户友好的方式切换。为此,可以再次调用 BSP API:
R_BSP_SoftwareDelay(1, BSP_DELAY_UNITS_SECONDS);
R_BSP_SoftwareDelay
函数的第一个参数是要延迟的单位数,而第二个参数是指定的基本单位,在 本例中为秒。其他选项包括毫秒和微秒。
最后,由于我们想无限期地运行程序,因此必须围绕代码创建一个 while(1) 循环。
根据官方文档的指示,我们要将代码输入到 hal_entry.c
文件中的函数签名之后,替换 /* TODO: add your own code here */
行。对于由项目配置器和 FSP 配置器插入的其他代码,请保持不变。单片机需要借助这些代码来正常运行。
但我默认生成的项目没有这一行。
可以将以下代码复制到hal_entry.c
的hal_entry()
函数体的第一行中。
extern bsp_leds_t g_bsp_leds;
bsp_leds_t Leds = g_bsp_leds;
while (1)
{g_ioport.p_api->pinWrite (&g_ioport_ctrl, Leds.p_leds[BSP_LED_LED1], BSP_IO_LEVEL_LOW);R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);g_ioport.p_api->pinWrite (&g_ioport_ctrl, Leds.p_leds[BSP_LED_LED1], BSP_IO_LEVEL_HIGH);R_BSP_SoftwareDelay (1, BSP_DELAY_UNITS_SECONDS);
}
复制到选中的位置中
编译运行
插入开发板,依次点击“构建”、“调试”、“继续”、“继续”。
然后就看到开发板红灯交替闪烁
相关文章:
【致敬未来的攻城狮计划】连续打卡第7天+瑞萨RA2E1点亮LED
开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯(http://yyds.recan-li.cn)和 瑞萨MCU (瑞萨电子 (Renesas Electronics Corporation) ) 联合发起的「 致敬未来的攻城狮计划 」的第 7 天,点击…...
Sam Altman专访:GPT-4没太让我惊讶,ChatGPT则让我喜出望外
导读ChatGPT、GPT-4 无疑是 2023 年年初人工智能界最大的「爆款」。3 月 26 日,OpenAI CEO、ChatGPT 之父 Sam Altman 接受了著名学者与科技播客、麻省理工大学研究员 Lex Fridman 的专访,Sam 分享了从OpenAI内部视角如何看待ChatGPT和GPT-4的里程碑式意…...
弯道超车的机会
弯道超车的机会 原文地址:https://bmft.tech/#/1-throught/0302-chance 前言 我一直很想把自己思考的东西表达出来,苦于语文成绩差,文字功力不够,想来想去也不知道用什么话来开场。我不喜欢站在高处对别人指指点点,…...
【设计模式】创建型模式之原型模式
【设计模式】创建型模式之原型模式 文章目录【设计模式】创建型模式之原型模式1.概述2. 构成3. 实现3.1 浅克隆3.2 深克隆1.概述 原型模式(Prototype Pattern):是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它…...
KMP算法——我欲修仙(功法篇)
个人主页:【😊个人主页】 系列专栏:【❤️我欲修仙】 学习名言:莫等闲、白了少年头,空悲切。——岳飞 系列文章目录 第一章 ❤️ 学习前的必知知识 第二章 ❤️ 二分查找 文章目录系列文章目录前言🚗&…...
【嵌入式Linux学习笔记】QT在Linux嵌入式设备上的使用
QT是目前主流的UI界面设计软件之一,Linux系统也支持QT应用,并且提供了很多方便的接口。所以有必要记录一下基于QT,在LCD屏幕上实现UI界面功能的各种细节。 学习视频地址:【正点原子】STM32MP157开发板 1. 系统配置 出于方便&am…...
js根据数据关键字实现模糊查询功能
js根据数据关键字实现模糊查询功能模糊查询实现模糊查询功能的步骤和一般方法第一步:创建假数据或请求接口数据第二步:分析数据格式,处理数据第三步:验证功能完整代码模糊查询 模糊查询功能是指在搜索或者查询时,允许…...
java获取对象属性
Field[] fields vo.getClass().getDeclaredFields(); for (Field field : fields) {//设置允许通过反射访问私有变量field.setAccessible(true);//获取字段的值String value "";Class<?> type field.getType();if (Date.class.equals(type)) {value DateU…...
51单片机(IIC协议OLED屏)
一、IIC协议 1、IIC协议概述 1.1、概述:IIC全称Inter-Integrated Circuit (集成电路总线) 是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式 1.2、特点:简单性和有效性。 由于接口直…...
你知道,华为对项目经理要求的3项技能5项素质是什么吗?
很多人一定在好奇,华为对项目经理的要求是什么呢?普通项目经理应具备什么素质,才能进入华为这样的大厂,在严峻的经济形势下无惧裁员呢? 一、三项软技能 我们在华为举办的项目经理论坛中找到了答案:对于华…...
优漫动游 提升效率常用的C4D技巧
C4D是近几年非常热的趋势,经常有人问3D相关的问题,想把自己在找捷径的过程中觉得最实用的小技巧分享给大家 1、快速定位层级和模型 模型的过程中,经常遇到模型层级多难定位的问题,逐级打开或者全部展开对于定位模型使…...
基于蚁群算法的时间窗口路径优化
目录 背影 蚁群算法的原理及步骤 基本定义 编程思路 适应度函数 算法的规则 特点 主要参数 代码 结果分析 展望 背影 现代物流配送对时间要求更高,是否及时配送是配送是否成功的重要指标,本文对路径优化加时间窗口,实现基于蚁群算法的时间窗口路径优化, 蚁群算法 基本…...
liunx
linux常用命令 mkdir :创建文件夹 rm -f :删除文件 docker cp 文件名 20f:容器内地址 将文件从linux系统移动到docker地址 ln -s 将两个文件做链接 compgen -u 查看所有用户 groups 查看所在组 vim 编辑 quit 退出 sudo su - root 获得root权限 cp dir1/…...
机动车发票组件【vue】
发票组件 问题反馈:在这就可以 Install-下载 npm install motorvehicles --savewarrning:我们推荐您设置key的,因为不存在它会带来数据的复用性问题usage-使用说明 import MotorVehiclesIvoice from motorvehiclesimport MotorVehiclesIvo…...
学习笔记-剖析k8s之StatefulSet的拓扑状态-3月day18
文章目录前言StatefulSetHeadless ServicePod的拓扑状态小结附前言 Deployment实际上并不足以覆盖所有的应用编排问题,原因在于Deployment对应用做了一个简单化的假设:一个应用的所有Pod,是完全一样的。所以,它们互相之间没有顺序…...
Java实现输出九九乘法口诀表,输入行数输出对应的梯形(平行四边形)这两个代码
目录 一、前言 二、代码部分 1.输出九九乘法口诀表的代码 三、程序运行结果(控制台输出) 一、前言 1.本代码是我在上学时写的,有一些地方没能完美实现,请包涵也请多赐教! 2.本弹窗界面可以根据简单的要求进行输…...
C++空间配置器
目录 1.什么是空间配置器 2.为什么需要空间配置器 3.SGI-STL空间配置器实现原理 3.1一级空间配置器 3.2二级空间配置器 3.2.1内存池 3.2.2 SGI-STL中二级空间配置器设计 3.3 空间配置器的默认选择 4.空间配置器与容器的结合 1.什么是空间配置器 空间配置器࿰…...
JConsole使用教程
JConsole是一个Java虚拟机的监控和管理工具,可以监控Java应用程序的内存使用、线程和类信息等。 以下是JConsole的使用教程: 1.启动JConsole JConsole是一个Java自带的工具,可以在bin目录下找到jconsole.exe文件。双击运行该文件即可启动JC…...
JS手写防抖和节流函数(超详细版整理)
1、什么是防抖和节流防抖(debounce):每次触发定时器后,取消上一个定时器,然后重新触发定时器。防抖一般用于用户未知行为的优化,比如搜索框输入弹窗提示,因为用户接下来要输入的内容都是未知的&…...
我的Macbook pro使用体验
刚拿到Mac那一刻,第一眼很惊艳,不经眼前一亮,心想:这是一件艺术品,太好看了吧 而后再体验全新的Macos 系统,身为多年的win用户说实话一时间还是难以接受 1.从未见过的访达,不习惯的右键 2. …...
炼石入选“首届工业和信息化领域商用密码应用峰会”典型方案
2023年3月22日-23日,浙江省经济和信息化厅、浙江省通信管理局、浙江省密码管理局、工业和信息化部商用密码应用产业促进联盟联合举办的“首届工业和信息化领域商用密码应用峰会”(以下简称峰会)在浙江杭州成功举办,旨在深入推进工…...
使用new bing chat成功了
步骤一:在扩展商店搜索并安装modheader 打开浏览器; 点击右上角的三个点图标,选择“更多工具” -> “扩展程序”; 在扩展程序页面上方的搜索框中输入“modheader”,然后点击“搜索商店”; 在搜索结果中找到“ModHeader”扩展程序,点击“添加至”按钮,然后再点击“添…...
Golang每日一练(leetDay0019)
目录 55. 跳跃游戏 Jump Game 🌟🌟 56. 合并区间 Mmerge Intervals 🌟🌟 57. 插入区间 Insert Interval 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练…...
记录一次性能测试遇到的问题
零、压测指标问题 压测指标,一定要需求方定 啊,谁提压测需求,谁来定压测指标。 如果需求方,对压测指标没有概念,研发和测试,可以把历史压测指标、生产数据导出来给需求方看,引导他们来定指标&…...
C++运算符重载基础教程
所谓重载,就是赋予新的含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同的操作。运算符重载(Operator Overloading)也是一个道理,同一个运算符可以有不同…...
Git命令总结
全局配置 git config --global user.name ‘你的名字’ git config --global user.email ‘你的邮箱’ 当前仓库配置 git config --local user.name ‘你的名字’ git config --local user.email ‘你的邮箱’ 查看 global 配置 git config --global --list 查看当前仓库…...
【车载以太网】BCM89572A0BCFBG、BCM89559GB0BCFBG、BCM89559GA0BCFBG具有安全启动和安全通信功能
BCM89572A0BCFBG 设备是Broadcom第六代完全集成的L2多层开关解决方案,支持车载网络应用的汽车认证(AEC-Q100)和温度等级。BCM8956X系列产品为汽车行业提高了具有多种一流功能的交换机的标准,例如802.1AE MACsec等集成安全功能,增加了主机连接…...
Lighttpd入门教程
Lighttpd入门教程概述入门教程安装配置静态文件服务动态文件服务虚拟主机SSL启动服务器日志模块总结lighthttpd使用场景和原理使用场景原理概述 Lighttpd(也称为轻量级HTTP服务器)是一款快速、灵活、轻量级的Web服务器,旨在提供高性能和低资…...
Springboot 多线程分批切割处理 大数据量List集合 ,实用示例
前言 哲学提问镇贴: 不了解异步怎么使用的看官, 可阅: SpringBoot 最简单的使用异步线程案例 Async_小目标青年的博客-CSDN博客 Springboot Async异步扩展使用 结合 CompletableFuture_小目标青年的博客-CSDN博客 想了解更多关于批量list处…...
SQLMAP工具基础使用
本文用的是kali自带的sqlmap工具 我们通过常用命令来理解sqlmap的基本使用 目录 检测注入 获取敏感信息 获取表 获取表的字段 获取数据 --technique 使用指定的注入方式 使用基于时间的延时注入 支持多种注入检测 默认是全部 注入时使用随机的 HTTP User-Agent 设置超时时间 读…...
网站建设 服务器/网页设计模板免费网站
为什么80%的码农都做不了架构师?>>> Viktor Grebenyuk是一名质量保证专家和测试经理,在测试复杂的(主要是金融领域的)系统和应用程序方面有八年以上的经验。他丰富的经验让他可以:比较不同的测试工具和…...
门户网站是以什么为主/产品推广策划书
Spring Boot约定优先于配置的惯例,旨在让您尽快启动和运行。在一般情况下,我们不需要做太多的配置就能够让spring boot正常运行。在一些特殊的情况下,我们需要做修改一些配置,或者需要有自己的配置属性。 一、自定义属性 当我们创…...
汕尾商城网站建设/温州网站建设优化
在前一天的博文中我提到了“!”(逻辑否)的优先级低于“()”(执行)。 但是直到昨天为止,我都没法很清楚地确定其它运算符的优先级是怎么样的。 注意到这个问题以后,我花了点时间,参考一些文档&am…...
沈阳做平板网站/百度搜索引擎广告
sql语句判断方法之一CASE语句用法总结 背景: Case具有两种格式。简单Case函数和Case搜索函数。 --简单Case函数 CASE sex WHEN 1 THEN 男 WHEN 2 THEN 女 ELSE 其他 END --Case搜索函数 CASE WHEN sex 1 THEN 男 WHEN sex 2 THEN 女 ELSE 其他 END 这两种方式&…...
阿里云备案 网站备案域名购买/如何推广平台
2019独角兽企业重金招聘Python工程师标准>>> 解读:clone自身方法上有很多缺陷,而且实际使用当中很少会利用覆盖clone方法去实现拷贝的动作。 关于缺点,这里不仔细研究。 克隆的定义,拷贝出一模一样的对象,但…...
瓜子网网站建设策划书/百度关键词自然排名优化公司
安装Android Studio 后,打不开? 解决方法: 卸载当前Android Studio程序;清空本地所有相关Android Studio程序生成的文件;将1,2做完后,重新安装程序。 上述方法不是惟一,若想了解其…...