OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2185|回复: 1

FreeRTOS: 互斥信号量使用笔记

[复制链接]

44

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
566
金钱
566
注册时间
2016-9-28
在线时间
158 小时
发表于 2018-8-31 07:16:51 | 显示全部楼层 |阅读模式
1. 声明变量
xSemaphoreHandle xSemaphore;


2. 创建信号量句柄
static void AppTask_xQueueObject (void)
{
    /* 创建互斥信号量 */
    xSemaphore = xSemaphoreCreateMutex();
    if( xSemaphore != NULL )
    {  
        printf(" Create xSemaphore: sucess \r\n");
    }        
}


3.  在task中应用互斥信号量,保护执行语句
void vTask1( void *pvParameters )
{
    while(1)
    {
        xSemaphoreTake( xSemaphore, portMAX_DELAY);
        printf(" Task1 is running \r\n");
        xSemaphoreGive( xSemaphore );  
    }
}

void vTask2( void *pvParameters )
{
    portTickType xLastWakeTime;
    const portTickType xFrequency = 100;

    /* 获取系统当前时间 */
    xLastWakeTime = xTaskGetTickCount();
    while(1)
    {
        vTaskDelayUntil( &xLastWakeTime, xFrequency );
        xSemaphoreTake( xSemaphore, portMAX_DELAY);
        printf(" Task2 is running \r\n");
        xSemaphoreGive( xSemaphore );  
    }
}




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
12566
金钱
12566
注册时间
2015-11-5
在线时间
2150 小时
发表于 2018-8-31 08:58:04 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 14:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表