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

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

3天内不再提示

瑞萨RA产品家族初学者指南-第9章(2)

瑞萨MCU小百科 来源:未知 2022-11-15 12:15 次阅读


瑞萨RA产品家族初学者指南》系列文章已收录成合集,欢迎点击上方查看合集并订阅!


9. 使用实时操作系统


本章目录

  1. 线程、信号量和队列

  2. 使用e2 studio将线程添加到FreeRTOS


9.2 使用e2 studio将线程添加到FreeRTOS中

接下来,只需要执行几个步骤,即可编译和下载程序。


添加信号量。请在LED Thread Objects”(LED线程对象)窗格中单击“New Object”(新对象)按钮。如果看到的不是此窗格,而是“HAL/Common Objects”(HAL/通用对象)窗格,则突出显示“Threads”(线程)窗格中的“LED Thread”(LED线程),随即将显示此窗格。

添加一个二进制信号量,我们需要在按下按钮时通知LED线程。将信号量的“Symbol”(符号)属性更改为g_s1_semaphore,并将“Memory Allocation”(存储器分配)保留为“Static(静态)。现在,FSP配置器中的“Stacks”(堆)选项卡的外观应类似于图9-5。


图9-5:这是添加LED线程和信号量后“Stacks”(堆)选项卡应呈现的外观


FSP配置器中的最后一步是将S1连接的I/O引脚配置为IRQ10输入。为此,请激活配置器中的Pins”(引脚)选项卡,展开“Ports → P0”端口 → P0),然后选择P005。在RA6M4评估板上,这是S1连接的端口。在右侧的“Pin Configuration”(引脚配置)窗格中,为其指定符号名称S1,并确保其他设置与图9-6中的设置相同。通常,配置器应该已为您完成了相关设置。如果没有完成,请相应调整。请注意,右侧的封装查看器将突出显示引脚135/P005,这样便可获得引脚位置的图形参考。


图9-6:应已为IRQ10正确配置了端口P005


完成此操作后,即完成了配置器中的设置。保存更改,然后单击其顶部的“Generate Project Content”(生成项目内容)图标以创建必要的文件、文件夹和设置。


需要执行的最后一项任务是添加初始化Leds结构体所需的代码,编写几行代码来切换LED并读取信号量,然后创建将设置信号量的回调函数。可以在本章末尾查看完整代码。


由于我们正在使用LED线处理按钮和切换LED,因此本次需要将相关代码添加到led_thread_entry.c文件中。在“Project Explorer”(项目资源管理器)中双击文件名以在编辑器中将其打开。如果未显示文件,请展开项目文件夹,然后展开src目录。与第8章中的练习一样,为LED添加结构体并对其进行初始化。需要定义LED2所连I/O引脚的电平的另一个变量。将其命名为led_level。该变量的类型需要采用ioport_level_t,并且应初始化为IOPORT_LEVEL_HIGH(在EK-RA6M4上,“高”电平对应于“开启”)。


下一步将是打开并启用连接到板上S1的IRQ10。为此,请使用IRQ FSP驱动程序的打开和使能功能。完成后,初始化即完成。



while(1)循环内部,需要添加一些语句并删除vTaskDelay(1); 语句。先使用函数调用将led_level的值写入LED2的I/O引脚的输出寄存器,然后执行相关语句切换该引脚的电平。有几种方法可以实现这一点。自行实现,回顾第8章的练习或查看本章结尾的代码。不要忘记e2 studio的智能手册功能,它会提供很大帮助!


While(1)循环中的最后一条语句是调用xSemaphoreTake(),将信号量的地址和常量portMAX_DELAY作为参数。后一个参数将通知RTOS无限期地暂停线程,直到从IRQ 10中断服务程序调用的回调函数中释放信号量为止。


最后要执行的操作是添加回调函数本身。该函数应尽可能短,因为它将在中断服务程序的上下文中执行。编写此函数十分简单:只需转到“Project Explorer”(项目资源管理器)中的“Developer Assistance → LED Thread → g_external_irq10 External IRQ Driver on r_icu”(开发人员帮助 → LED线程 → r_icu 上的g_external_irq10外部IRQ驱动程序),然后将所出现列表末尾的回调函数定义拖放到源文件中。



在回调函数内,添加以下两行代码:



第一行中的宏将告知编译器回调函数不使用参数p_args,从而避免编译器发出警告,而第二行中的宏则在每次按下按钮S1时释放信号量。注意,必须使用give系列函数的中断保存版本,因为此函数调用发生在ISR的上下文内。此调用的第二个参数是*pxHigherPriorityTaskWoken。如果可能有一个或多个任务由于信号量发生阻塞并等待该信号量变为可用状态,并且其中一个任务的优先级高于发生中断时执行的任务,则此参数将在调用xSemaphoreGiveFromISR()后变为true。在这种情况下,应在退出中断之前执行上下文切换。由于在我们的示例中,没有其他任务依赖于此信号量,因此可以将此参数设置为NULL


完成所有代码编写后,单击“Build”(编译)图标(“锤子”),编译项目。如果编译后存在错误,请返回程序,借助“Problems”(问题)视图中显示的编译器反馈修复问题。


如果项目编译成功,请单击“Debug”(调试)图标旁的小箭头,选择“Debug Configurations”(调试配置),然后展开“Renesas GDB Hardware Debugging”(瑞萨GDB硬件调试)。选择MyRtosProject Debug_Flat,或者为项目指定的名称,然后单击“Debug”(调试)。这样便可启动调试器。如果您需要更多相关信息,请回顾第8章中的相关部分。调试器启动并运行后,单击“Resume”(恢复)两次。现在程序正在执行,每次按下EK上的S1时,绿色LED2都相应切换。


最后一点:在实际应用中,应执行错误检查以确保程序正确运行。为了清楚和简洁起见,本示例中将其省略。



您已成功完成本练习!


本章要点:

  • 通过使用全面的API,可以轻松使用FSP的各个函数。

  • FSP将处理大多数与用户代码无关的内容。

  • 使用FreeRTOS十分简单,因为FSP配置器的使用非常直观,添加线程和信号量也相当轻松。


第9章 结束


往期推荐

1

瑞萨RA产品家族初学者指南-第6章

2

瑞萨RA产品家族初学者指南-第5章(1)

3

瑞萨RA产品家族初学者指南-第5章(2)

瑞萨电子 (TSE: 6723)

科技让生活更轻松,致力于打造更安全、更智能、可持续发展的未来。作为全球微控制器供应商,瑞萨电子融合了在嵌入式处理、模拟电源及连接方面的专业知识,提供完整的半导体解决方案。成功产品组合加速汽车、工业、基础设施及物联网应用上市,赋能数十亿联网智能设备改善人们的工作和生活方式。

更多信息,敬请访问renesas.com



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

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

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

    关注

    146

    文章

    16017

    浏览量

    343624
  • 瑞萨
    +关注

    关注

    32

    文章

    22214

    浏览量

    84915

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

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

收藏 人收藏

    评论

    相关推荐

    国内哪家的FPGA适合初学者

    如题,想着手学习FPGA的话,国内哪家的比较好,更适合初学者学习?这方面的经验,是一点都没。
    发表于 04-14 19:17

    瑞萨电子RA产品家族新增RA0E1 MCU产品

    瑞萨电子RA产品家族新增RA0E1 MCU产品组。RA0E1系列是一款低功耗、低成本微控制器,结
    的头像 发表于 04-11 15:17 354次阅读
    瑞萨电子<b class='flag-5'>RA</b><b class='flag-5'>产品</b><b class='flag-5'>家族</b>新增<b class='flag-5'>RA</b>0E1 MCU<b class='flag-5'>产品</b>组

    初学者请问各位大佬

    为什么在89C51单片机中R1可以提供低地址 在外部扩展RAM中不是P0口提供低8位地址P2口提供高8位地址吗初学者有些不理解望各位大佬解答一下谢谢
    发表于 02-23 16:39

    RA家族QE电机应用开发指南

    电子发烧友网站提供《RA家族QE电机应用开发指南.pdf》资料免费下载
    发表于 01-31 09:57 0次下载
    <b class='flag-5'>RA</b><b class='flag-5'>家族</b>QE电机应用开发<b class='flag-5'>指南</b>

    分享给嵌入式初学者

    电子发烧友网站提供《分享给嵌入式初学者.doc》资料免费下载
    发表于 11-08 10:46 0次下载
    分享给嵌入式<b class='flag-5'>初学者</b>

    面向CAN总线初学者的入门教程

    本资料是CAN初学者的入门书,对 CAN 是什么、CAN 的特征、标准规格下的位置分布等、CAN 的概要及 CAN 的协议进行了说明。
    发表于 10-20 17:25 1次下载

    初学者入门

    太好了,初学者学习慢慢消化中……
    发表于 09-21 13:50

    BMS架构的初学者指南,电池管理系统bms的功能包括哪些

    电池技术的持续转型促使许多新人学习设计电池管理系统。本文提供了电池管理系统(BMS)架构的初学者指南,讨论了主要功能块,并解释了每个模块对电池管理系统的重要性。
    的头像 发表于 07-12 15:41 2258次阅读
    BMS架构的<b class='flag-5'>初学者</b><b class='flag-5'>指南</b>,电池管理系统bms的功能包括哪些

    初学者工具包-沙漏(个人模组)

    电子发烧友网站提供《初学者工具包-沙漏(个人模组).zip》资料免费下载
    发表于 06-26 09:43 0次下载
    <b class='flag-5'>初学者</b>工具包-沙漏(个人模组)

    初学者快速判断并查找出LED显示屏故障的方法

    LED显示屏故障分析对于初学者来说直接、有效的方法就是排除法,LED显示屏主要由三大硬件部分组成:控制卡、单元板、开关电源。LED显示屏故障分析对于初学者来说直接、有效的方法就是排除法,LED显示屏主要由三大硬件部分组成:控制卡、单元板、开关电源。
    的头像 发表于 06-15 14:48 781次阅读
    <b class='flag-5'>初学者</b>快速判断并查找出LED显示屏故障的方法

    《GD32 MCU原理及固件库开发指南》+读后感

    4~8偏重实践,主要以实例来讲解工程应用。如果你是一名经验丰富的资深用户,对GD32 MCU已经有了一定的了解,可以从4开始阅读。如果你是一名
    发表于 06-06 21:52

    FPB-RA6E1快速原型板】CoreMark移植完全指南——UART输出和SysTick计时

    /redefining-low-level-library-functions-to-enable-direct-use-of-high-level-library-functions 【野火 RA系列FSP库开发实战
    发表于 05-28 17:18

    RA MCU创意氛围赛】3. 硬件I2C驱动OLED显示汉字

    RA MCU创意氛围赛】1. PWM驱动LED以及STLINK下载配置【RA MCU创
    发表于 05-26 14:06

    PLC初学者必须掌握的梯形图

    PLC初学者必须掌握的七大梯形图
    发表于 05-25 16:44 4次下载

    RA MCU创意氛围赛】以RA2E的车载VFD屏幕时钟

    引言 很高兴能有机会参加【RA MCU创意氛围赛】,在以前学习stm32的时候,就是野火的开发板、文档以及视频带我入门的。现在有空体验一下野火的产品——
    发表于 05-21 17:02