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

    文章

    10863

    浏览量

    211796
  • FreeRTOS
    +关注

    关注

    12

    文章

    484

    浏览量

    62182
  • ESP32
    +关注

    关注

    18

    文章

    971

    浏览量

    17279

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    freertos最多支持多少个任务

    FreeRTOS是一个轻量级的实时操作系统(RTOS),其设计初衷就是为了提供简单、可靠且高效的实时任务管理。关于FreeRTOS最多支持多少个任务的问题,实际上并没有一个固定的上限,
    的头像 发表于 09-02 14:21 915次阅读

    如何使用freeRTOS在两个任务之间传输任务数据?

    /温度。 我想创建一个 CSV 文件来记录一段时间内的数据。 我创建 I2C 任务的方法与示例中的 emFIlesystem 任务相同。 两者都在运行,做着它们应该做的事情,但我觉得它们之间没有任何联系
    发表于 07-03 07:55

    请问一下FREERTOS只能创建4个任务,修改哪个宏定义可以增加创建任务的数量?

    请问一下FREERTOS只能创建4个任务,修改哪个宏定义可以增加创建任务的数量?解决方法:增加FREERTOS的堆。
    发表于 05-13 06:44

    用STM32CubeMX中的FreeRTOS创建3任务无法运行的原因?

    用STM32CubeMX中的FreeRTOS 创建3任务 Task Priority =osPrioirityNoral 等级的任务,无法运行。 如果创建2个任务就可以。2个以上都不行
    发表于 05-09 07:02

    用的cube生成的freertos工程,串口和任务通过邮箱通讯,结果任务反应很慢是怎么回事?

    初学freertos。用的cube生成的freertos工程,单片机型号位stm32f103vbt6。 建了三个人物,一个是串口任务,一个是LED每秒翻转一次,一个是空任务。 串口
    发表于 05-08 08:13

    freertos系统如何划分任务

    正在看freertos方面的教程,想请教下如何划分任务? 比如之前做的一个数据采集板,用到了单片机以下功能: 1,单片机通过SPI1和ADC芯片通讯,同时还要通过SPI控制ADC电路部分的其他外围
    发表于 05-08 07:16

    freertos如何周期性的执行一个任务,比如200ms调用一次任务, 用定时器发消息?

    freertos如何周期性的执行一个任务,比如200ms调用一次任务, 用定时器发消息?有没有一个函数能直接实现
    发表于 05-07 08:21

    FreeRTOS系统使用xTaskCreate产生的任务与osThreadDef 产生的线程有什么不同?

    请教下是要 FreeRTOS系统, 使用 xTaskCreate 产生的任务 与 osThreadDef产生的线程有什么不同?
    发表于 04-29 07:20

    freertos任务创建,每一个任务分配的内存是多大才好,怎么计算呢?

    小白刚刚接触freertos,想问一下就创建任务而言,每一个任务分配的内存是多大才好,怎么计算呢? 另外,每个任务的执行周期怎么确定?在任务
    发表于 04-23 06:39

    为什么CubeMX设计的FreeRTOS工程只能正常运行3个任务

    用CubeMX4.20设计的FreeRTOS工程有六个任务,出一个任务优先级较低外,另外几个都是较高优先级。发现只有3个任务是正常运行的,还有三个没有运行的迹象。用断点跟踪法在
    发表于 04-19 08:23

    freertos串口接收数据后如何发送给任务

    正在学freertos。串口中断接收一帧数据后,放到数组里,如何将数据发送给任务呢? 如果用消息队列,是否建立的消息队列需要是数组类型的?还是说消息列表建立成uint8类型的,列表长度设为接收数据
    发表于 04-18 06:36

    FreeRTOS里在中断中挂起任务出错的原因?怎么解决?

    各位大佬,新手刚学习FreeRTOS,现在想在中断中挂起某个任务,我在教程里看到说有中断中的恢复函数xTaskResumeFromISR,但是没有在中断中的挂起函数,我搜了一下,有人说直接用
    发表于 04-16 08:26

    FreeRTOS任务无故进入挂起状态的原因?

    请教大家一个问题,我子啊使用FreeRTOS的时候创建了一个以太网的任务任务在使用的过程中被无故挂起,请问一下出现这种现象有哪几种原因呢?
    发表于 04-09 07:20

    无法在AURIX™ Development Studio中调试freeRTOS任务怎么解决?

    我们正在开发 AURIX™ TriCore™ TC389 控制器。 你能否建议需要使用哪个 RTOS 以及首选 IDE调试器来进行开发过程? 此外,我无法在 AURIX™ Development Studio 中调试 freeRTOS 任务。 我们如何调试?
    发表于 01-18 07:41