ucosiii信号量新特性简述

    xiaoxiao2021-09-01  98

    ucosiii信号量可用于ISR与任务间、任务与任务间的同步,新增加可选模式,如非阻塞等待、释放但不进行任务调度、 新增任务内嵌的信号量(用户程序无需建立信号量便可与任务直接通信)      常规信号量和任务内建信号量      1)常规信号量 一般使用流程 声明 OS_SEMTEST_SEM; OSSemCreate ((OS_SEM*)&TEST_SEM,                  (CPU_CHAR* )"TEST_SEM",                  (OS_SEM_CTR)0,                  (OS_ERR* )&err); //参数3 //1、OS_OPT_PEND_NON_BLOCKING用于非阻塞方式  //2、OS_OPT_PEND_BLOCKING用于阻塞方式 OSSemPend(&TEST_SEM,100,OS_OPT_PEND_BLOCKING,0,&err); //参数2  //1、OS_OPT_POST_1      POST and ready only the highest priority task waiting on semaphore(if tasks are waiting) //2、OS_OPT_POST_ALL      POST to ALL tasks that are waiting on the semaphore //3、OS_OPT_POST_NO_SCHED              Do not call the scheduler   发送信号量但系统不需要马上进入调度 OSSemPost(&TEST_SEM,OS_OPT_POST_1,&err);       2) 内嵌信号量     无需自己去创建信号量,只使用于单个任务里面       如串口接收到完整数据,通过内建信号量发送给任务      ISR服务程序里:           //参数二  //1、OS_OPT_POST_NONE  //2、OS_OPT_POST_NO_SCHED        OSTaskSemPost(&MyTaskTCB, OS_OPT_POST_NONE,&err);//参数一指明任务块即可        任务里面:        OSTaskSemPend(100,OS_OPT_PEND_BLOCKING,0,&err);
    转载请注明原文地址: https://ju.6miu.com/read-677371.html

    最新回复(0)