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

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

3天内不再提示

于FreeRTOS任务与任务之间的通讯

工程师邓生 来源:硬件会 作者:硬件会 2022-09-14 15:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

任务与任务之间通讯,多个任务可以共享一个全局变量,但是此全局变量的写操作只能由一个任务完成,其余任务只能多此全局变量进行读操作。

如果多个任务对这个全局变量写操作时,由于FreeRTOS的任务实时性,比如此变量的值为100,两个任务会同时获取到这个值,对他进行加减操作。

这样这个变量的值就会不正确。

这就是竞争冒险关系 此共享的全局变量类型必须是CPU类型的通道。

比如ESP32是32bit(4字节)单片机,此全局变量类型必须是int和long类型。

示例如下:

1603969e-3051-11ed-ba43-dac502259ad0.png

1633488a-3051-11ed-ba43-dac502259ad0.png
165cc9f8-3051-11ed-ba43-dac502259ad0.png



审核编辑:刘清

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

    关注

    68

    文章

    11223

    浏览量

    223000
  • FreeRTOS
    +关注

    关注

    14

    文章

    497

    浏览量

    66369
  • ESP32
    +关注

    关注

    24

    文章

    1086

    浏览量

    20873

原文标题:任务与任务之间通讯一(共享全局变量)

文章出处:【微信号:硬件会,微信公众号:硬件会】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FreeRTOS任务和协程的区别是什么

    1.堆栈 协程是没有堆栈分配的,是所有创建的协程共同使用一个堆栈空间,这相比任务来说,减少了RAM的使用空间。 2. 调度和优先级 协程使用协同调度,但是可以包含在使用的抢占优先级之中。 3. 宏
    发表于 12-08 08:18

    ucos与freertos哪个好?

    选择uCOS或FreeRTOS取决项目的具体需求和资源限制。 FreeRTOS的优点包括: 更小的内核ROM和RAM占用,特别是在RAM方面,适合资源受限的嵌入式系统。 支持协程
    发表于 12-05 07:13

    FreeRTOS 空闲任务

    FreeRTOS 中很多人会注意到为什么有一个叫IDLE task的任务占用了CPU百分之九十多的使用权,但是这个任务并没有自己手动创建。原因就是这个空闲任务是系统自己创建的,每当系统
    发表于 12-04 07:35

    RTOS 必学概念:任务、信号量、队列一次搞懂

    个FIFO缓冲区?”这些问题听起来基础,但又总是绕在初学者脑子里。很多人直接拿FreeRTOS、RTX这样的RTOS例程开搞,能跑起来,却完全没理解任务调度、信号
    的头像 发表于 11-17 10:53 206次阅读
    RTOS 必学概念:<b class='flag-5'>任务</b>、信号量、队列一次搞懂

    freertos关闭任务调度的方法

    #include \"FreeRTOS.h\" #include \"task.h\" /* 关闭任务调度 */ void
    发表于 11-17 06:47

    FreeRTOS任务调度及优先级问题

    ,对于通信的时序要求比较严格,FreeRTOS这种轮转机制会不会导致一些通讯被打断(比如通信的数据并不完整,数据发送到一半因为任务调度就被打断了?) 这可能只是我的一些不切实际的猜想,因为芯片通信一般
    发表于 11-06 02:18

    Task任务:LuatOS实现“任务级并发”的核心引擎

    Task任务通过其强大的并发处理能力,使LuatOS能够在单线程环境中模拟多线程执行,通过协程的挂起与恢复机制,实现任务级的并行操作,显著提升系统效能。 sys核心库是LuatOS运行框架库,也是
    的头像 发表于 08-28 13:49 346次阅读
    Task<b class='flag-5'>任务</b>:LuatOS实现“<b class='flag-5'>任务</b>级并发”的核心引擎

    揭秘LuatOS Task:多任务管理的“智能中枢”

    Task任务作为LuatOS的核心组成部分,通过智能化的任务管理机制,实现任务的创建、调度与协同运行,让复杂应用得以高效并行处理,满足实时场景下的严苛需求。 sys核心库是LuatOS运行框架库
    的头像 发表于 08-28 13:48 402次阅读
    揭秘LuatOS Task:多<b class='flag-5'>任务</b>管理的“智能中枢”

    同步任务开发指导

    。 由于TaskPool偏向单个独立的任务,因此当各个同步任务之间相对独立时推荐使用TaskPool,例如一系列导入的静态方法,或者单例实现的方法。如果同步
    发表于 06-19 07:57

    FreeRTOS任务中发送事件队列是有什么限制吗?

    到了TMC的芯片,但是在到位上报的信息中少了卡死电机的上报。所以有的电机的到位中断并没有成功写入任务。 一开始是每个电机都开启了一个定时器查询,后续改成一个定时器查六个电机并将定时器的周期加到50ms,就很少会卡死。 所以向FreeRTOS
    发表于 06-11 07:57

    Linux计划任务cron详解

    cron是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的
    的头像 发表于 02-07 15:31 1552次阅读
    Linux计划<b class='flag-5'>任务</b>cron详解

    两台PLC之间Profinet通讯案例

    在现代工业自动化领域,可编程逻辑控制器(PLC)作为控制系统的核心组件,承担着数据采集、逻辑控制、通信传输等重要任务。随着工业4.0和智能制造的推进,PLC之间的通信效率和可靠性成为了关键因素
    的头像 发表于 02-02 16:42 2773次阅读

    VIAVI助力NASA木卫二快船任务

    近日,VIAVI(唯亚威通讯)在航空探索领域再立新功,为NASA的木卫二快船任务(Europa Clipper mission)提供了关键技术支持。此次合作,充分展现了VIAVI在精密薄膜光学涂层
    的头像 发表于 01-15 17:28 1293次阅读

    SpaceX年度发射任务接近尾声

    近日,SpaceX在X平台上发布消息称,猎鹰9号火箭在加利福尼亚州和佛罗里达州连续成功完成了两次发射任务。其中,一次任务将22颗星链(Starlink)卫星送入星座,另一次则成功将Astranis
    的头像 发表于 12-31 11:09 1272次阅读

    使用任务通知提高RTOS应用的效率

    在实时嵌入式系统中,性能和资源效率是决定设计成败的关键因素。传统的实时操作系统(RTOS)提供了如队列、信号量和事件组机制,实现任务之间的同步和通信。FreeRTOS/SAFERTOS还提供一种方法可以使这些过程更快、更轻量化,
    的头像 发表于 12-27 14:54 1080次阅读