临界段:
CPU_SR_ALLOC();
OS_CRITICAL_ENTER();
OS_CRITICAL_EXIT();
多值信号量:
OS_SEM SemOfKey; //标志是否被单击的多值信号量
OSSemCreat( (OS_SEM *)&SemOfKey, //指向信号量变量的指针
(CPU_CHAR *)"SemOfKey",//信号量的名字
(OS_SEM_CTR )5, //表示现有资源数目
(OS_ERR *)&err); //错误类型
Temp=OSSemPend ((OS_SEM *)&SemOfKey//等待该信号量 SemOfKey
(OS_TICK )0,
(OS_OPT )OS_OPT_PEND_NON_BLOCKING,
(CPU_TS *)0, //不获取时间戳
(OS_ERR *)&err); //返回错误类型
ctr = OSSemPost((OS_SEM *)&SemOfKey, //发布区SemOfKey
(OS_OPT )OS_OPT_POST_ALL, //发布给所有等待的任务
(OS_ERR *)&err); //返回错误类型
使能钩子函数
#if OS_CFG_APP_HOOKS_EN //使用钩子函数
App_OS_SetAllHooks();
#endif
使能时间片轮转调度
#if OS_CFG_SCHED_ROUND_ROBIN_EN
//使能时间片轮转调度,时间片长度为1个系统时钟节拍,1*5=5ms
//当有相同优先级任务时候使用,给每个任务设置时间片数, (OS_TICK )0,
//总的时间大于任务运行时间
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);
#endif