这个程序是MINI扩展程序的16信号量,
#if OS_SEM_EN > 0
typedef struct { // 定义一个信号量数据结构(OS_SEM_DATA)
INT16U OSCnt; // 定义信号量计数值
INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; // 定义任务等待列表
INT8U OSEventGrp; // 定义等待事件的任务组
} OS_SEM_DATA;
#endif
OS_SEM_DATA pdat[];纵观这个程序,作者原意应该是要定义一个OS_SEM_DATA指针,可是指针有这么定义的吗,我试着改为OS_SEM_DATA *pdat;却无法工作,还有我如果定义为OS_SEM_DATA pdata[]老是编译不通过,是不是跟这个INT8U OSSemQuery (OS_EVENT *pevent, OS_SEM_DATA *pdata)有关,和形参有关?
2 void delay_ms(u16 nms)
{ void delay_us(u32 nus) ;
//if(OSRunning==TRUE)//如果os已经在跑了
{
if(nms>=fac_ms)//延时的时间大于ucos的最少时间周期
{
OSTimeDly(nms/fac_ms);//ucos延时
}
//ucos已经无法提供这么小的延时了,采用普通方式延时
}
//delay_us((u32)(nms*1000));
}
我把//if(OSRunning==TRUE)屏蔽掉了,一直用OSTimeDly(nms/fac_ms);//ucos延时,可是也是可以工作的,为什么?
3includes.h有如下定义
#ifndef __INCLUDES_H__
#define __INCLUDES_H__
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include "stdarg.h"
#include "uCOS_II.H"
#include "os_cpu.h"
#include "os_cfg.h"
想问一下
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
有什么用
#include "stdarg.h"
|