推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

实验78_事件组中断安全设置_xEventGroupSetBitsFromISR.docx

资料介绍

实验 78:事件组中断安全设置 — xEventGroupSetBitsFromISR

实验说明

实验概述

在中断服务程序中设置事件标志组的位,必须使用 xEventGroupSetBitsFromISR() 函数,而不能直接使用 xEventGroupSetBits()。这是因为事件组操作可能涉及任务切换,而中断中不允许直接进行任务切换。xEventGroupSetBitsFromISR() 将设置操作延迟到定时器服务任务中执行,确保中断安全。

实验原理

xEventGroupSetBitsFromISR() 不直接设置事件位,而是向定时器命令队列发送一个命令,由定时器服务任务在任务上下文中执行实际的设置操作。这种方式虽然引入了少量的延迟,但确保了中断安全。

实验现象

模拟两个中断源,在 ISR 中通过 xEventGroupSetBitsFromISR() 设置事件位,处理任务等待事件位组合触发后执行操作。

完整代码

  c
#include "FreeRTOS.h"
#include "task.h"
#include "event_groups.h"
#include <stdio.h>

EventGroupHandle_t xEventGroup = NULL;

#define EVT_ISR_1    (1 << 0)
#define EVT_ISR_2    (1 << 1)
#define EVT_BOTH     (EVT_ISR_1 | EVT_ISR_2)

/* 模拟 ISR 1 触发 */


部分文件列表

文件名 大小
实验78_事件组中断安全设置_xEventGroupSetBitsFromISR.docx 38K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单
  • 21下载积分 打赏60.00元   3天前

    用户:gsy幸运

  • 21下载积分 打赏70.00元   3天前

    用户:铁蛋锅

  • 21下载积分 打赏65.00元   3天前

    用户:xzxbybd

  • 21下载积分 打赏60.00元   3天前

    用户:jh0355

  • 21下载积分 打赏60.00元   3天前

    用户:w178191520

  • 21下载积分 打赏20.00元   3天前

    用户:jh03551

  • 21下载积分 打赏20.00元   3天前

    用户:sun2152

  • 21下载积分 打赏20.00元   3天前

    用户:kk1957135547

  • 21下载积分 打赏25.00元   3天前

    用户:w1966891335

  • 21下载积分 打赏20.00元   3天前

    用户:xuzhen1

  • 21下载积分 打赏15.00元   3天前

    用户:x15580286248

  • 21下载积分 打赏25.00元   3天前

    用户:pcb

  • 21下载积分 打赏20.00元   3天前

    用户:bhacker

  • 21下载积分 打赏15.00元   3天前

    用户:liqiang9090

  • 21下载积分 打赏25.00元   3天前

    用户:有理想666

  • 21下载积分 打赏15.00元   3天前

    用户:godbox

  • 21下载积分 打赏15.00元   3天前

    用户:aetek

  • 21下载积分 打赏5.00元   3天前

    用户:mulanhk

  • 21下载积分 打赏5.00元   3天前

    用户:JuneLin61

推荐下载