0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何编写代码以切换EK上的用户LED

瑞萨MCU小百科 来源:瑞萨MCU小百科 作者:瑞萨MCU小百科 2022-10-25 14:20 次阅读

8. Hello World! – Hi Blinky!

您将在本章中学到以下内容:

如何从头开始为EK-RA6M4评估板创建项目。

如何在FSP配置器中更改灵活配置软件包的设置。

如何编写代码以切换EK上的用户LED

如何下载和测试程序。

本章目录:

使用项目配置器创建项目

使用FSP配置器设置运行环境

编写前几行代码

编译第一个项目

下载和调试第一个项目

8.3 编写前几行代码

获取所有自动生成的文件之后,接下来查看创建的内容。IDE左侧的“Project Explorer”(项目资源管理器)列出了当前包含的所有内容。Ra_gen文件夹保存通道号等配置集。Src目录包含一个名为hal_entry.c的文件。这是稍后要编辑的文件。请注意,尽管在ra_gen文件夹中有一个名为main.c的文件,但用户代码必须转到hal_entry.c中。否则,如果您在FSP配置器中进行修改并重新创建项目内容,则更改会丢失,因为每次单击“Generate Project Content”(生成项目内容)时,都将覆盖该文件。

3a6e73c0-541c-11ed-a3b6-dac502259ad0.jpg

图8-9:FSP配置器创建所需文件后的项目树

该项目还包含几个名称中带有“ra”或“fsp”的目录,其中包含FSP的源文件、包含文件和配置文件。通常的规则是,不得修改这些文件夹(和子文件夹)的内容。其中包含由配置器生成的文件,在此所做的任何更改都将在下次生成或刷新项目内容时丢失。用户可编辑的源文件是直接位于src文件夹或您添加的任何其他文件夹的根目录中的文件。

接下来,为RA产品家族单片机编写第一个真实源代码。计划是在EK-RA6M4评估板上的绿色LED2和红色LED3之间每秒交替切换,因此您必须通过添加代码来点亮和熄灭LED以及实现延时循环。如何实现?

实际上有两种选择:一种是通过接口函数来使用API,另一种是使用BSP实现函数。您认为哪一种更好?如果您不确定答案,可以回顾第2章。

如果查看文件ra_gencommon_data.c中的代码,则会发现I/O端口驱动程序实例g_ioport具有以下定义:

3a8c56d8-541c-11ed-a3b6-dac502259ad0.jpg

g_ioport_on_ioport是一个结构体,用于声明端口可能执行的操作,将分配给g_ioport实例的API指针。将鼠标悬停在该结构体上,可以轻松查看其中的内容,此结构体显示了其成员之一(.pinWrite)是指向引脚写入函数的指针。

因此,要点亮LED,可以写入:

3aa78da4-541c-11ed-a3b6-dac502259ad0.jpg

但这意味着实际上需要知道LED2和LED3连接到哪些I/O端口,以及有多少个LED可用!为此,我们可以阅读电路板的文档或仔细检查原理图以找到正确的端口。或者,也可以只依靠FSP。创建类型为bsp_leds_t的结构体(在board_leds.h中声明)并为其分配在board_leds.c中定义的全局BSP结构体g_bsp_leds即可解决问题。这两个文件均位于项目的raoards a6m4_ek文件夹内。因此,以下两行代码足以获取有关评估板上LED的信息

3aba3e0e-541c-11ed-a3b6-dac502259ad0.jpg

现在,可以使用LED结构体来访问电路板上的所有LED,并使用以下语句点亮绿色LED2(将端口设置为低电平将点亮LED,将端口设置为高电平则将熄灭LED):

3acb5e64-541c-11ed-a3b6-dac502259ad0.jpg

此语句后需要有第二条语句,用于将其引脚设置为高电平以熄灭LED3。

最后,需要提供一段延时以使LED以用户友好的方式切换。为此,可以再次调用BSP API:

3aea1584-541c-11ed-a3b6-dac502259ad0.jpg

R_BSP_SoftwareDelay函数的第一个参数是要延迟的单位数,而第二个参数是指定的基本单位,在本例中为秒。其他选项包括毫秒和微秒。

完成这些操作后,接下来要做的是复制/粘贴三行代码,并反转第二组中LED的引脚电平。最后,由于我们想无限期地运行程序,因此必须围绕代码创建一个while(1)循环。

目前,还需要执行的操作是将以下代码行直接输入到hal_entry.c文件中的函数签名之后,替换/* TODO: add your own code here */行。对于由项目配置器和FSP配置器插入的其他代码,请保持不变。单片机需要借助这些代码来正常运行。

3afcdd40-541c-11ed-a3b6-dac502259ad0.jpg

编写代码时,始终可以使用e2 studio的自动完成功能。只需按下-,便会出现一个窗口,显示结构体或函数可能的补全代码。如果单击一个条目,它会被自动插入代码中。

3b1871c2-541c-11ed-a3b6-dac502259ad0.jpg

图8-10:在变量或函数上按下-将激活e2 studio的代码补全功能

编写程序时,另一个有用的工具是“Developer Assistance”(开发人员帮助),可以从“Project Explorer”(项目资源管理器)中访问此工具。在使用FSP配置器配置了项目的软件堆栈之后,此工具将为您快速了解应用程序代码提供支持。要访问“Developer Assistance”(开发人员帮助),请先在“Project Explorer”(项目资源管理器)中展开项目,此工具随即显示。显示工具后,进一步展开树,直到看到堆栈模块及其API。选择要使用的API,然后将对该API的调用拖放到源文件中。

现在轮到您进行操作:请将上面的代码行输入到项目hal_entry.c文件中。为此,展开项目的src文件夹,然后双击上述文件。此操作会在编辑器中将其打开。如果您不想自己输入所有内容,也可以扫描下方二维码进入本手册的网站下载完整的项目。

8.4 编译第一个项目

输入所有内容后,便可随时编译程序。编译有两种不同的配置:调试和发布。调试配置将包含调试程序所需的所有信息,例如变量和函数名,并且还将关闭编译器的某些优化,例如循环展开。这会使调试更加容易,但会增大代码大小、减慢代码执行速度。发布配置将从输出文件中除去所有这些信息,并开启完全优化,从而减小代码大小、加快代码执行速度,但是,您再也无法执行查看变量等操作(除非您知道它们在存储器中的地址)。

对于第一个测试,可以采用调试配置(也是默认配置)。要编译项目,单击主菜单栏3b81f5a2-541c-11ed-a3b6-dac502259ad0.jpg上的“build”(编译)按钮,编译过程随即开始。如果一切正常,编译将以0个错误和0个警告结束。如果存在编译时错误,则需要返回代码,仔细检查是否正确输入了所有内容。如果未正确输入所有内容,请相应地更改代码。为了让您更轻松地定位错误,编译器的反馈将直接插入编辑器窗口(如果可能)。

程序编译成功后,会创建输出文件MyBlinkyProject.elf,需要先将其下载到处理器,然后才能运行和调试该文件。

8.5 下载和调试第一个项目

下一步是在评估板(EK)上实际运行程序。现在需要将评估板连接到Windows工作站:将电路板随附的USB线缆的micro-B端插入系统控制和生态系统访问区域右下角的USB调试端口J10,将另一端插入PC上的空闲端口。白色LED4(构成文字“EK-RA6M4”中的连字符)应点亮,表示电路板已通电。如果该评估板支持开箱即用,则预编程的演示会运行,表明一切都按预期运行。Windows操作系统可能会显示一个对话框,指示正在安装J-Link板上调试器的驱动程序,此过程应自动完成。此外,还可能会出现一个窗口,询问是否更新J-Link调试器。强烈建议允许进行此更新。

如果USB端口旁边的橙色调试LED5在短时间内不停地闪烁,则表示工作站上的J-Link驱动程序可能有问题。如果发生这种情况,请参见第7.1节获取可能的解决方案。

下载

要下载程序,必须先创建一个调试配置。单击“Debug”(调试)符号3b98b526-541c-11ed-a3b6-dac502259ad0.jpg旁边的小箭头,然后从下拉列表框中选择“Debug Configurations”(调试配置)。

在出现的窗口中,突出显示“Renesas GDB Hardware Debugging”(瑞萨GDB硬件调试)下的MyBlinkyProject Debug_Flat。由于项目配置器已经进行了所有必要的设置,因此无需在此对话框中进行任何更改。只需单击窗口右下角的“Debug”(调试)。此操作会启动调试器,将代码下载到EK上的RA6M4 MCU,并询问您是否要切换到“Debug Perspective”(调试透视图)。请选择“Switch”(切换)。“Debug Perspective”(调试透视图)将打开,并且程序计数器将设置为程序的入口点,即复位处理程序。此调试配置仅需要创建一次。下次只需单击“Debug”(调试)符号3ba89126-541c-11ed-a3b6-dac502259ad0.jpg便可启动调试器。

3bbe010a-541c-11ed-a3b6-dac502259ad0.jpg

图8-11:选择MyBlinkyProject Debug_flat后,无需在其他选项卡上进行任何更改

运行

单击“Resume”(恢复)按钮3bded2fe-541c-11ed-a3b6-dac502259ad0.jpg,下一个停止处将处于main()中调用hal_entry()的位置。再次单击该按钮,程序将继续执行,并按预期的1秒时间间隔在评估板上的绿色和红色LED之间切换。

观察结果

如果一切正常,单击主菜单栏上的“Suspend”(暂停)3bf43914-541c-11ed-a3b6-dac502259ad0.jpg 按钮。这将停止执行程序但不会将其终止。在编辑器视图中,激活文件hal_entry.c的选项卡,然后右键单击包含对端口的写操作的其中一行;在出现的菜单中,选择“Run to line”(运行至指定行)。执行将恢复,程序将在单击的行处停止。现在来看一下右侧包含变量的视图。您将看到列出的Leds结构体。将其展开,浏览和分析不同的字段。调试较大的项目时,此视图会派上用场。

3c03ce10-541c-11ed-a3b6-dac502259ad0.jpg

图8-12:变量及其值可以在“Variables”(变量)视图中进行检查

最后一步是单击“Terminate”(终止)按钮3c24c0ac-541c-11ed-a3b6-dac502259ad0.jpg,结束调试会话,以停止程序的执行。

您已经掌握了RA产品家族单片机的第一个程序!

本章要点:

项目配置器将创建新项目所需的所有文件和设置。

FSP配置器允许编程人员基于图形用户界面轻松配置FSP和运行环境。

调试配置是调试项目的必需步骤。它会自动创建,只需要激活即可。

实现所需功能仅需要很少的代码行。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23128

    浏览量

    658234
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68319
  • FSP
    FSP
    +关注

    关注

    0

    文章

    34

    浏览量

    7107
  • 配置器
    +关注

    关注

    0

    文章

    25

    浏览量

    11634

原文标题:瑞萨RA产品家族初学者指南-第8章(2)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何利用代码编写编写MSP430程序实现LED闪烁

    在本教程中,我们将了解代码编辑器工作室以及如何使用它来编程 MSP430。本教程是为初学者编写的,除了 MSP430 板和计算机外,不需要任何硬件。在本教程结束时,我们将能够闪烁MSP430的板载LED
    的头像 发表于 11-14 16:13 5301次阅读
    如何利用<b class='flag-5'>代码</b><b class='flag-5'>编写</b>器<b class='flag-5'>编写</b>MSP430程序实现<b class='flag-5'>LED</b>闪烁

    如何编写控制LED灯的亮灭程序代码

    【蓝桥杯单片机 控制LED灯电路经典程序】(2)接上篇:一篇(1)中只介绍了控制LED灯的电路,138译码器打通573锁存器,锁存器再控制八路LED灯。这篇主要介绍如何
    发表于 12-02 06:23

    LED基础模块的程序代码该怎样去编写

    LED基础模块的程序代码该怎样去编写呢?蜂鸣器基础模块的程序代码该怎样去编写呢?
    发表于 01-25 06:37

    为什么用NUCLEO板编写的中断代码触发LED会失败呢

    我正在尝试使用我的 NUCLEO 板(PC13)用户按钮编写一个中断代码来触发 LED(PB14)。然而,正如我从调试器中观察到的那样,
    发表于 12-08 07:03

    如何编写Arm汇编代码

    大多数开发人员使用高级语言(如C和C++)编写大部分代码。然后将此高级源代码编译为在目标设备运行的机器代码。 然而,有时
    发表于 08-02 13:01

    编写高效Lua代码的方法

    编写高效Lua代码的方法
    发表于 02-07 21:04 0次下载

    编写一个闪烁LED代码

    电子发烧友网站提供《编写一个闪烁LED代码.zip》资料免费下载
    发表于 10-24 10:55 2次下载
    <b class='flag-5'>编写</b>一个闪烁<b class='flag-5'>LED</b>灯<b class='flag-5'>代码</b>

    EK-RA4W1 用户手册

    EK-RA4W1 用户手册
    发表于 02-02 18:41 0次下载
    <b class='flag-5'>EK</b>-RA4W1 <b class='flag-5'>用户</b>手册

    使用RESET按钮切换LED实现快速用例

    电子发烧友网站提供《使用RESET按钮切换LED实现快速用例.zip》资料免费下载
    发表于 02-06 14:36 0次下载
    使用RESET按钮<b class='flag-5'>切换</b><b class='flag-5'>LED</b><b class='flag-5'>以</b>实现快速用例

    如何使用参数化编写可重用的verilog代码

    ,因为我们可以更轻松地将代码从一个设计移植到另一个设计。 我们在verilog中有两个可用的结构,可以帮助我们编写可重用的代码 - 参数化和generate语句。这两种结构都允许我们创建更通用的
    的头像 发表于 05-11 15:59 1082次阅读

    在MicroROS开发板编写HelloWord代码

    你好,我是爱吃鱼香ROS的小鱼。这一节我们正式在MicroROS开发板编写代码,输出HelloWorld到电脑。在正式开始编写
    的头像 发表于 07-02 15:38 1199次阅读
    在MicroROS开发板<b class='flag-5'>上</b><b class='flag-5'>编写</b>HelloWord<b class='flag-5'>代码</b>

    EK-RA4W1 用户手册

    EK-RA4W1 用户手册
    发表于 07-03 21:00 0次下载
    <b class='flag-5'>EK</b>-RA4W1 <b class='flag-5'>用户</b>手册

    FPGA的Verilog代码编写规范

      注:R起头的是对编写Verilog代码的IP设计者所做的强制性规定,G起头的条款是建议采用的规范。每个设计者遵守本规范可锻炼命名规范性。
    的头像 发表于 08-15 16:23 2069次阅读

    SAM9X60-EK用户指南

    电子发烧友网站提供《SAM9X60-EK用户指南.pdf》资料免费下载
    发表于 09-20 09:43 0次下载
    SAM9X60-<b class='flag-5'>EK</b><b class='flag-5'>用户</b>指南

    两款LED线性恒流控制芯片:SM2212EK和SM2213EK的对比

    SM2212EK和SM2213EK都是属于LED线性恒流控制芯片,那么,这两款芯片的区别在哪里?下面就来分析对比一下。 SM2212EKLED
    的头像 发表于 11-08 16:27 188次阅读
    两款<b class='flag-5'>LED</b>线性恒流控制芯片:SM2212<b class='flag-5'>EK</b>和SM2213<b class='flag-5'>EK</b>的对比