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

描述

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”(生成项目内容)时,都将覆盖该文件。

FSP

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

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

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

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

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

FSP

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

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

FSP

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

FSP

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

FSP

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

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

FSP

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

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

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

FSP

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

FSP

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

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

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

8.4 编译第一个项目

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

对于第一个测试,可以采用调试配置(也是默认配置)。要编译项目,单击主菜单栏FSP上的“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”(调试)符号FSP旁边的小箭头,然后从下拉列表框中选择“Debug Configurations”(调试配置)。

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

FSP

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

运行

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

观察结果

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

FSP

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

最后一步是单击“Terminate”(终止)按钮FSP,结束调试会话,以停止程序的执行。

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

本章要点:

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

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

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

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

审核编辑:汤梓红

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分