EMFuture_API库使用手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EMFuture_API库使用手册
2014.12,第三版
中嵌科技有限公司
版权所有
文档修订:
版权申明:
本公司保留在未通知用户的情况下,对其产品、服务及文档进行更正、修改、增减等其他一切变更的权利。
在定购前,用户应获取相关信息的最新版本,并确认这些信息是完全和最新的,在不用于商业目的的情况下,公司允许用户对其文档、产品进行复制。
用户可以登录公司网站(),获取最新产品信息。
目录
1、API库的使用方法 (4)
2、库函数返回值定义 (5)
3、串口操作函数 (6)
3.1 预定义 (6)
3.2 OpenCom 函数 (6)
3.3 SetComCfg函数 (7)
3.4 ReadCom函数 (7)
3.5 WriteCom函数 (8)
3.6 CloseCom函数 (8)
4、ADC设备操作函数 (9)
4.1 预定义 (9)
4.2 OpenAdc函数 (10)
4.3 CloseAdc函数 (10)
4.4 SetAdcCfg函数 (11)
4.5 GetAdcCfg函数 (12)
4.6 ReadAdcSampling函数 (13)
5、DAC设备操作函数 (14)
5.1 预定义 (14)
5.2 OpenDac函数 (14)
5.3 SetDacCfg函数 (15)
5.4 WriteDacRawVal函数 (15)
5.5 WriteDacfloatVal函数 (16)
5.6 CloseDac函数 (16)
6、GPIO操作函数 (17)
6.1 SetEnIOOutState函数 (17)
6.2 GetEnIOOutState函数 (17)
6.3 SetEnIOPulseState函数 (18)
6.4 GetEnIOPulseCfg函数 (18)
6.5 GetEnIOInValue函数 (19)
6.6 SetEnIOEventCfg函数 (19)
6.7 GetEnIOEventCfg函数 (20)
7、RTC设备操作函数 (21)
7.1 GetRtcTime函数 (21)
7.2 SetRtcTime函数 (22)
8、定时器操作函数 (23)
8.1 预定义 (23)
8.2 CreateTimer函数 (23)
8.3 UserusDelayms函数 (24)
9、高精度定时器操作函数 (25)
9.1 预定义 (25)
9.2 CreateHighResTimer函数 (25)
9.3 UserusDelayus函数 (26)
9.4 DelHighResTimer函数 (26)
10、看门狗操作函数 (27)
10.1 EnableWtd函数 (27)
10.2 FeedWtd函数 (27)
10.3 DisableWtd函数 (28)
11、串行ID芯片操作函数 (29)
11.1 ReadSerialID函数 (29)
12、温度传感器操作函数 (30)
12.1 预定义 (30)
12.2 SetSensorCfg函数 (30)
12.3 ReadSensorVal函数 (31)
13、蜂鸣器和运行指示灯操作函数 (32)
13.1 预定义 (32)
13.2 IoctlBuzzer函数 (32)
13.3 IoctlRunLed函数 (33)
14、键盘操作函数 (34)
14.1 键盘API预定义 (34)
14.2 OpenKbd函数 (34)
14.3 FlushKbd函数 (35)
14.4 GetKeyValue函数 (35)
14.5 CloseKbd函数 (36)
15、端口操作函数 (37)
15.1 预定义 (37)
15.2 OpenPortDev函数 (38)
15.3 ClosePortDev函数 (38)
15.4 SetPortCfg函数 (39)
15.5 GetPortCfg函数 (39)
15.6 InPortw函数 (40)
15.7 OutPortw函数 (40)
15.8 InPortl函数 (41)
15.9 OutPortl函数 (41)
15.10 InPortb函数 (42)
15.11 OutPortb函数 (42)
16、用户层GPIO操作函数 (43)
16.1 预定义 (43)
16.2 SetGPIOCfg函数 (43)
16.3 GPIOOutValue函数 (44)
16.4 GPIOInValue函数 (44)
16.4 FreeGPIOCfg函数 (45)
1、API库的使用方法
步骤一
将API库emfuture_api从产品CD中(一般位于Software/SDK目录)拷贝到开发PC上,建议将API库与应用程序放在同一级子目录中。
步骤二
将emfuture_api下inc目录添加到应用程序的include路径中;
将emfuture_api下lib目录添加到应用程序的lib路径中
步骤三
在应用程序中的头文件定义中加入文件libs_emfuture_odm.h;同时在应用程序的makefile文件中添加链接选项“-lEM_Middleware_Lib”。
通过上述步骤,即可在应用程序自由调用API库中提供各类操作函数。
若采用Emfulture_IDE进行应用程序开发,关于添加include路径、lib路径及链接选项的操作方法请参考《Emfulture_IDE用户手册》
2、库函数返回值定义
#define ERROR_NOSUPPORT -5 //当前不支持该功能
#define ERROR_SYS -4 //系统API返回错误(系统调用返回错误)#define ERROR_INPARA -3 //参数错误(如参数不合法、缓冲区过小等)#define ERROR_TIMEOUT -2 //操作超时
#define ERROR_FAIL -1 //其他错误,原因不明
#define ERROR_OK 0 //操作成功
3、串口操作函数
//*-----------------------------------------------------------
//*
//** 串口设备相关部分
//**
//** 注:若在同一个进程中需要对多个串口进行轮询读,为达到更优的
//** 非阻塞效果,建议直接使用select+read机制取代库中API函数
//** 读函数ReadCom,但其他函数仍可使用。
//*-----------------------------------------------------------
3.1 预定义
串口默认参数:
#define DEFCFGFORCOM "115200,8,1,N"
3.2 OpenCom 函数
函数定义:
int OpenCom(char *dev, int* fd, char *configs);
功能描述:
打开并初始化串口。
参数:
dev: - 串口设备名,如/dev/ttyS1
configs: - 初始化通讯参数字符串:波特率,数据位,停止位,校验位,
如: "115200,8,1,N",若为NULL,则使用默认参数("115200,8,1,N")
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
int SetComCfg(int fd, char *configs);
功能描述:
设置串口参数。
参数:
fd: - 串口设备文件句柄
configs: - 通讯参数字符串:波特率,数据位,停止位,校验位
如: "115200,8,1,N"
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
3.4 ReadCom函数
函数定义:
int ReadCom(int fd, char *buffer, unsigned int *len, int timesoutus);
功能描述:
读串口数据。
参数:
fd: - 指定串口设备的句柄(即OpenCom()的返回值)。
buffer: - 读取的数据存放缓冲区。
len: - 读取的数据长度(指针),同时返回实际读取的数据数目。
timesoutus: - 最大的阻塞读取等待间隔,单位: useconds(微秒)
若timesoutus<=0,阻塞读模式,即直到读够指定数据个数后函数返回。
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、分配采样值存放缓冲区时,一定要足够存放指定的数据个数,否则可能造成缓冲区溢出。
2、当置为阻塞读模式时,指定的读数据个数需要恰当,否则若没有相应个数数据,则进程会阻塞。
3、成功读取数据大小,由参数len返回。
int WriteCom(int fd, char *buffer, unsigned int *len, int timesoutus);
功能描述:
向串口写数据。
参数:
fd: - 指定串口设备的句柄(即OpenCom()的返回值)
buffer: - 读取的数据存放缓冲区
len: - 读取的数据长度(指针),同时返回实际读取的数据数目
timesoutus: - 最大的阻塞读取等待间隔,单位: useconds(微秒)
若timesoutus<=0,阻塞读模式,即直到读够指定数据个数后函数返回。
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、当置为阻塞写模式时,指定的数据个数需要恰当,否则若设备当前不可写的话,可能会造成进程阻塞。
2、实际写的数据大小,由参数len返回。
3.6 CloseCom函数
函数定义:
int CloseCom(int fd);
功能描述:
关闭串口设备。
参数:
fd: - 指定串口设备的句柄(即OpenCom()的返回值)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
4、ADC设备操作函数
//*-----------------------------------------------------------
//* ADC设备相关部分
//*
//*-----------------------------------------------------------4.1 预定义
采样位数:
16-bit
typedef unsigned short cyg_adc_sample;
ADC设备的命令字定义:
EM_SETADC_SWITCHKEY:指定通道转换关系
EM_SETADC_START_IOCFG:启动ADC采样
EM_SETADC_STOP_IOCFG: 停止ADC采样
EM_SETADC_RATE_IOCFG:设置采样率
EM_SETADC_MODE_IOCFG: 设置采样模式
EM_SETADC_ENCHAN_IOCFG:使能指定的采样通道
EM_SETADC_DISCHAN_IOCFG: 无效指定的采样通道
EM_GETADC_STAT_IOCFG:获取采样通道的使能状态
EM_GETADC_RATE_IOCFG: 获取采样率
EM_GETADC_MODE_IOCFG:获取采样模式
ADC设备的采样模式定义:
(*支持模式与硬件平台相关)
EM_ADCTRIGER_ONESHOT 单次触发(即读一次ADC触发一次采样)
EM_ADCTRIGER_SOFTPERIOD 软件定时器触发周期性采样
EM_ADCTRIGER_HARDPERIOD 硬件定时器触发周期性采样
AD采样值转换结构(cyg_adc_sample -> float):
struct __sample_to_float {
cyg_adc_sample ivalue;
float fvalue;
};
4.2 OpenAdc函数
函数定义:
int OpenAdc(char *dev, struct __sample_to_float *keys);
功能描述:
打开ADC设备。
参数:
dev: - ADC的设备文件名,如"/dev/adc0",由实际平台决定。
keys: - ADC的采样值与实际物理量转换关系结构。
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、转换关系表如下所示:
struct __sample_to_float keys[] = {
{0xfff, 3.32},
{0x12, 0.02}
};
上述数组为两组采样数字量与相对应的模拟量数值,需根据实际测量进行设定。
4.3 CloseAdc函数
函数定义:
int CloseAdc(void);
功能描述:
关闭ADC设备,释放相关资源。
参数:
无
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
功能描述:
对ADC设备进行配置。
参数:
chan: - 设置ADC通道号
若chan>0, 则设定某单一通道
若chan==0, 则设定所有通道
cmd: - 设置命令取值如下:
EM_SETADC_SWITCHKEY:指定通道转换关系
EM_SETADC_START_IOCFG:启动ADC采样
EM_SETADC_STOP_IOCFG: 停止ADC采样
EM_SETADC_RATE_IOCFG:设置采样率
EM_SETADC_MODE_IOCFG: 设置采样模式
EM_SETADC_ENCHAN_IOCFG:使能指定的采样通道
EM_SETADC_DISCHAN_IOCFG: 无效指定的采样通道
buffer: - 配置指令的参数缓冲区
len: - 参数长度
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、采样模式支持如下三种:
EM_ADCTRIGER_ONESHOT:单次触发(即读一次ADC触发一次采样)
EM_ADCTRIGER_SOFTPERIOD:软件定时器触发周期性采样
EM_ADCTRIGER_HARDPERIOD:硬件定时器触发周期性采样
2、该函数支持与否与硬件平台相关。
功能描述:
读取ADC设备的当前配置。
参数:
chan: - 设置ADC通道号
若chan>0, 则设定某单一通道
若chan==0, 则设定所有通道
cmd: - 设置命令取值如下:
EM_GETADC_STAT_IOCFG:获取采样通道的使能状态
EM_GETADC_RATE_IOCFG: 获取采样率
EM_GETADC_MODE_IOCFG:获取采样模式
buffer: - 配置指令的参数缓冲区
len: - 参数长度
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、采样模式支持如下三种:
EM_ADCTRIGER_ONESHOT:单次触发(即读一次ADC触发一次采样)
EM_ADCTRIGER_SOFTPERIOD:软件定时器触发周期性采样
EM_ADCTRIGER_HARDPERIOD:硬件定时器触发周期性采样
2、该函数支持与否与硬件平台相关。
4.6 ReadAdcSampling函数
函数定义:
int ReadAdcSampling(unsigned char chann, void* buffer, unsigned int *len, unsigned char type, int timesout);
功能描述:
读取ADC的采样值。
参数:
chan: - 设置ADC通道号
若chan>0, 则读某单一通道
若chan==0, 则采样所有通道
buffer: - 采样值缓冲区
len: - 采样次数,同时返回实际读取的采样值数目。
若chan>0, len表示该通道的采样次数
若chan=0, len表示每一通道的采样次数
type: - 数据类型
若type=0,则读取为转换的原始采样值
若type=1,则读取转换后的模拟量
timesout:- 该参数暂未支持
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、分配采样值存放缓冲区时,一定要足够存放指定的采样值个数:
若chan > 0时:缓冲区大小 >= len * sizeof(cyg_adc_sample)
若chan = 0时:缓冲区大小 >= TOTALCHAN * len * sizeof(cyg_adc_sample)
5、DAC设备操作函数
//*-----------------------------------------------------------
//* DAC设备相关部分
//*
//*-----------------------------------------------------------
5.1 预定义
DAC输出位数:
16-bit
typedef unsigned short cyg_dac_out;
DAC采样值变换结构(float -> cyg_dac_out):
struct __float_to_dacout {
float fvalue;
cyg_dac_out ivalue;
};
5.2 OpenDac函数
函数定义:
int OpenDac (char *dev, struct __float_to_dacout *keys);
功能描述:
打开DAC设备。
参数:
dev: - DAC的设备文件名,如"/dev/dac0",由实际平台决定。
keys: - DAC转换参数表,即数字量与实际输出模拟量的转换关系表
若keys==NULL,则直接将指定输出值作为数字量输出。
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、转换关系表如下所示:
struct float_to_dacout keys[] = {
{3.32, 0xfff},
{0.02, 0x12}
};
上述数组为两组模拟量与相对应数字量数值,需根据芯片参数或者实际测量进行设定。
5.3 SetDacCfg函数
函数定义:
int SetDacCfg(int chan, struct __float_to_dacout *keys);
功能描述:
设置DAC各通道转换参数。
参数:
chan: - 设置DAC通道号
若chan>0, 则设定某单一通道
若chan==0, 则设定所有通道
keys: - 转换参数表
(如果keys==NULL,则直接将value值作为转换后的数字量输出)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、转换关系表如下所示:
struct float_to_dacout keys[] = {
{3.32, 0xfff},
{0.02, 0x12} };
上述数组为两组模拟量与相对应数字量数值,需根据芯片参数或者实际测量进行设定。
5.4 WriteDacRawVal函数
函数定义:
int WriteDacRawVal(int chan,unsigned short intval);
功能描述:
向DAC输出数据,数据为转换后的整数值。
参数:
chan: - 设置DAC通道号
若chan>0, 则只输出某单一通道
若chan==0, 则所有通道输出
intval: - 输出数字量
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、intval为拟输出的16位数字量
5.5 WriteDacfloatVal函数
函数定义:
int WriteDacfloatVal(int chan,float val);
功能描述:
向DAC输出数据,数据为未经转换的模拟量。
参数:
chan: - 设置DAC通道号
若chan>0, 则只输出某单一通道
若chan==0, 则所有通道输出
val: - 输出模拟量
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、val为输出的模拟量(浮点数)
5.6 CloseDac函数
函数定义:
int CloseDac(void);
功能描述:
关闭DAC设备,释放相关资源。
参数:
无
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
6、GPIO操作函数
//*-----------------------------------------------------------
//* GPIO相关部分
//*
//*-----------------------------------------------------------
6.1 SetEnIOOutState函数
函数定义:
int SetEnIOOutState(int gpio, int state);
功能描述:
设置GPIO为电平输出,并设置IO的输出状态
参数:
gpio: - IO端口号
state: - IO输出状态(0:Low/1:High)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
6.2 GetEnIOOutState函数
函数定义:
int GetEnIOOutState(int gpio,int *curstate);
功能描述:
读取为电平输出类型IO的当前输出状态。
参数:
gpio: - IO端口号
curstate: - 返回IO的当前输出状态(0:Low/1:High)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
6.3 SetEnIOPulseState函数
函数定义:
int SetEnIOPulseState(int gpio, int hitime10us, int period10us);
功能描述:
设置GPIO为脉冲输出,并指定输出参数。
参数:
gpio: - IO端口号
hitime10us: - 指定脉冲高电平输出时间,单位10us
period10us: - 指定脉冲输出周期,单位:10us
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
6.4 GetEnIOPulseCfg函数
函数定义:
int GetEnIOPulseCfg(int gpio, int *hitime10us, int *period10us);
功能描述:
读取为脉冲输出类型IO的当前脉冲参数。
参数:
gpio: - IO端口号
hitime10us: - 返回脉冲输出的高电平输出时间参数,单位10us
period10us: - 返回脉冲输出的当前输出周期参数,单位:10us
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
6.5 GetEnIOInValue函数
函数定义:
int GetEnIOInValue(int gpio,int *curval);
功能描述:
读取为电平输入类型IO的当前输入值。
参数:
gpio: - IO端口号
curval: - 返回IO的当前输入状态(0:Low/1:High)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
6.6 SetEnIOEventCfg函数
函数定义:
int SetEnIOEventCfg(int gpio,void(*func)(int gpio),int mode, int filterus);
功能描述:
设置GPIO为事件IO输入,并指定事件触发参数。
参数:
gpio: - IO端口号
func: - IO事件回调执行函数,即检测到IO事件发生,该函数会被触发执行
mode: - IO事件类型
0: HI_to_LOW / 1:LOW_to_HI;2:ALL
filterus: - 防抖滤波参数,单位:us,即有效电平持续时间
若电平持续时间<filterus,则假定为干扰,事件不响应
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、 func为回调函数指针,若为NULL,则清除该事件IO。
因此当需要将事件IO重置为为正常输入IO时,需指定func为NULL并调用SetEventIOCfg函数。
2、func回调函数的参数即为当前gpio。
6.7 GetEnIOEventCfg函数
函数定义:
int GetEnIOEventCfg(int gpio,int *mode,int *filterus);
功能描述:
读取输入类型为事件IO的参数。
参数:
gpio: - IO端口号
mode: - 返回IO事件检测类型
0: HI_to_LOW;1:LOW_to_HI;2:ALL
filterus: - 返回脉冲高电平输出时间,单位10us
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
7、RTC设备操作函数
//*-----------------------------------------------------------
//* RTC设备相关部分
//*
//*-----------------------------------------------------------
7.1 GetRtcTime函数
函数定义:
int GetRtcTime(unsigned short* data);
功能描述:
读取RTC时间。
参数:
data: - 返回当前RTC时间
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、数组data中时间规则如下:
data[0] --- 年
data[1] --- 月
data[2] --- 日
data[3] --- 时
data[4] --- 分
data[5] --- 秒
data[6] --- 星期
7.2 SetRtcTime函数
函数定义:
int SetRtcTime(unsigned short* configs, unsigned char syn);
功能描述:
设置RTC时间。
参数:
configs: - 拟设定RTC时间
syn: - 同步系统时间(0-NO/1-Yes)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、数组data中时间规则如下:
data[0] --- 年
data[1] --- 月
data[2] --- 日
data[3] --- 时
data[4] --- 分
data[5] --- 秒
8、定时器操作函数
//*-----------------------------------------------------------
//* 定时器相关部分
//*
//*-----------------------------------------------------------
8.1 预定义
定时器回调函数指针:
typedef void (*FUNC) (int sig);
定时器触发模式:
EMTIMER_SINSHOT_MODE ——单次触发
EMTIMER_PERSHOT_MODE ——周期性触发
8.2 CreateTimer函数
函数定义:
int CreateTimer(FUNC handler, void *args, unsigned int usecs, int mode);
功能描述:
创建用户定时器。
参数:
handler: - 定时器的触发函数句柄
args: - 传递给触发函数的参数
usecs: - 定时间隔,单位: useconds(微秒)
mode: - 定时器的触发模式
EMTIMER_SINSHOT_MODE ——单次触发
EMTIMER_PERSHOT_MODE ——周期性触发
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
8.3 UserusDelayms函数
函数定义:
int UserusDelayms(unsigned int millsecs);
功能描述:
用户层延时函数(相对精确的毫秒级延时)。
参数:
millsecs: - 延时大小(单位:毫秒ms)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
9、高精度定时器操作函数
//*-----------------------------------------------------------
//* 高精度定时器相关部分
//*
//*-----------------------------------------------------------
9.1 预定义
高精度定时器回调函数指针:
typedef void (*HFUNC) (int sig, siginfo_t *extra, void *args);
定时器触发模式:
EMTIMER_HIGHSINSHOT_MODE ——单次触发
EMTIMER_HIGHSPERSHOT_MODE ——周期性触发
9.2 CreateHighResTimer函数
函数定义:
int GreateHighResTimer(HFUNC handler, timer_t *timerid,
unsigned int nsecs,int mode);
功能描述:
创建用户定时器。
参数:
handler: - 定时器的触发函数句柄
timerid: - 高精度定时器句柄指针(供删除定时器时使用)
usecs: - 定时间隔,单位: neconds(纳秒
mode: - 定时器的触发模式
EMTIMER_HIGHSINSHOT_MODE ——单次触发
EMTIMER_HIGHSPERSHOT_MODE ——周期性触发
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、该函数需要平台支持高精度定时器功能
2、高精度定时器使用完后,需要调用定时器删除函数(参数timerid),否则可能会影响系统效率
3、当项目使用高精度定时器后,需要在编译链接程序时指定“-lrt”。
9.3 UserusDelayus函数
函数定义:
int UserusDelayus(unsigned int usecs);
功能描述:
用户层延时函数(相对精确的微秒级延时)。
参数:
usecs: - 延时大小(单位:微妙us)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
9.4 DelHighResTimer函数
函数定义:
int DelHighResTimer(timer_t timerid);
功能描述:
删除高精度定时器。
参数:
timerid: -高精度定时器句柄指针(由GreateHighResTimer返回)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、参数必须是GreateHighResTimer返回的定时器句柄
10、看门狗操作函数
//*-----------------------------------------------------------
//* 看门狗相关部分
//*
//*-----------------------------------------------------------
10.1 EnableWtd函数
函数定义:
int EnableWtd(int TimeOut);
功能描述:
使能看门狗设备。
参数:
TimeOut: - 指定看门狗的最大喂狗间隔(秒)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
10.2 FeedWtd函数
函数定义:
int FeedWtd (void);
功能描述:
喂狗操作。
参数:
无
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
10.3 DisableWtd函数
函数定义:
int DisableWtd (void);
功能描述:
关闭看门狗。
参数:
无
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
11、串行ID芯片操作函数
//*-----------------------------------------------------------
//* 串口ID芯片相关部分
//* 注:需硬件支持
//*-----------------------------------------------------------
11.1 ReadSerialID函数
函数定义:
int ReadSerialID(unsigned char* id, unsigned char* len);
功能描述:
读取串行ID(DI)设备的唯一ID号。
参数:
id: - 返回芯片ID数据数组
len: - ID数组的长度
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
12、温度传感器操作函数
//*-----------------------------------------------------------
//* 温度传感器相关部分
//* 注:需硬件支持
//*
//*-----------------------------------------------------------
12.1 预定义
温度传感器设备的命令字定义:
EM_SET_SENSOR_RES ——设置采样分辨率
EM_GET_SENSOR_RES ——读取当前采样分辨率
EM_SET_SENSOR_MAXLIMIT ——设置报警上限(* not support now)
EM_GET_SENSOR_MAXLIMIT ——读取当前报警上限(* not support now)
EM_SET_SENSOR_MINLIMIT ——设置报警下限(* not support now)
EM_GET_SENSOR_MINLIMIT ——读取当前报警下限(* not support now)
12.2 SetSensorCfg函数
函数定义:
int SetSensorCfg(int cmd, unsigned short* arg);
功能描述:
配置温度传感器的工作参数。
参数:
cmd: - 用户命令码
EM_SET_SENSOR_RES ——设置采样分辨率
EM_GET_SENSOR_RES ——读取当前采样分辨率
EM_SET_SENSOR_MAXLIMIT ——设置报警上限(* not support now)
EM_GET_SENSOR_MAXLIMIT ——读取当前报警上限(* not support now)
EM_SET_SENSOR_MINLIMIT ——设置报警下限(* not support now)
EM_GET_SENSOR_MINLIMIT ——读取当前报警下限(* not support now) arg: - 传入/传出设置参数
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
12.3 ReadSensorVal函数
函数定义:
int ReadSensorVal(float* value);
功能描述:
读取传感器的采样温度值。
参数:
value: - 返回温度值(浮点数)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
13、蜂鸣器和运行指示灯操作函数
//*-----------------------------------------------------------
//* 蜂鸣器和运行指示灯相关部分
//* 注:需硬件支持
//*
//*-----------------------------------------------------------
13.1 预定义
蜂鸣器的命令字定义:
EM_BUZZER_ON ——使能蜂鸣器
EM_BUZZER_OFF ——关闭蜂鸣器
运行指示灯的命令字定义:
EM_RUNLED_ON ——点亮指示灯
EM_RUNLED_OFF ——关闭指示灯
13.2 IoctlBuzzer函数
函数定义:
int IoctlBuzzer(unsigned short ulaston10ms, unsigned short ulastoff10ms);
功能描述:
操作蜂鸣器设备。
参数:
ulaston10ms: - 鸣叫持续时间,单位10毫秒
ulastoff10ms: - 响铃关闭时间,单位10毫秒
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、ulaston10ms与ulastoff10ms的单位均为10毫秒;
2、ulaston10ms与ulastoff10ms的取值规则:
若ulaston10ms= 0 ---- Buzzer Off
若ulaston10ms=0Xffff ---- 蜂鸣器持续鸣叫
若ulaston10ms>0 && ulastoff10ms=0 ----- 蜂鸣器鸣叫1次,持续时间ulaston10ms
若ulaston10ms>0 && ulastoff10ms>0 ------ 蜂鸣器周期性鸣叫,鸣叫时间ulaston10ms,周期(ulaston10ms+ulastoff10ms)
3、命令码为EM_BUZZER_OFF,uduring50ms与uperiod50ms均无意义
13.3 IoctlRunLed函数
函数定义:
int IoctlRunLed(unsigned short ulaston10ms, unsigned short ulastoff10ms);
功能描述:
操作运行指示灯(Running LED)。
参数:
ulaston10ms: - 运行指示灯持续时间,单位10毫秒
ulastoff10ms: -运行指示灯关闭时间,单位10毫秒
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、ulaston10ms与ulastoff10ms的单位均为10毫秒;
2、ulaston10ms与ulastoff10ms的取值规则:
若ulaston10ms= 0 ---- 关闭运行指示灯
若ulaston10ms=0Xffff ---- 运行指示灯持续亮
若ulaston10ms>0 && ulastoff10ms=0 ----- 运行指示灯闪烁1次,持续时间ulaston10ms
若ulaston10ms>0 && ulastoff10ms>0 ------运行指示灯周期性闪烁,持续时间ulaston10ms,周期(ulaston10ms+ulastoff10ms)
14、键盘操作函数
//*-----------------------------------------------------------
//* 键盘相关部分
//* 注:需硬件支持
//*
//*-----------------------------------------------------------
14.1 键盘API预定义
键盘状态定义:
DOWN_KEY ——按下
UP_KEY ——弹起
14.2 OpenKbd函数
函数定义:
int OpenKbd(char *dev,int *fd);
功能描述:
打开键盘设备。
参数:
dev: - 键盘设备文件,如/dev/kbd0
fd: - 返回文件句柄
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
功能描述:
清空键盘缓冲区。
参数:
fd: - 键盘文件句柄
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
14.4 GetKeyValue函数
函数定义:
int GetKeyValue(int fd, unsigned short *keyValue, unsigned char *status);
功能描述:
读取键盘值及对应状态。
参数:
fd: - 键盘文件句柄
keyValue: - 返回按键值
status: - 返回按键的当前操作状态(1:UP/0:DOWN)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
功能描述:
关闭键盘设备,释放相关资源。
参数:
fd: - 键盘文件句柄
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
15、端口操作函数
//*-----------------------------------------------------------//* 端口相关部分
//* 注:需硬件支持
//*
//*----------------------------------------------------------- 15.1 预定义
读写宽度:
typedef enum {
PORT_WIDTH_8 = 0,
PORT_WIDTH_16,
PORT_WIDTH_32
} port_wid_t;
合法的BANK编号:
typedef enum {
PORT_BANK_2 = 0,
PORT_BANK_4,
PORT_BANK_5,
PORT_BANK_6,
PORT_BANK_7,
} port_bank_t;
BANK属性定义:
typedef struct {
port_bank_t bank;
port_wid_t width;
short reserved;
} port_attr_t;
数据传递结构定义:
typedef struct {
int regAddr;
int regData;
} port_data_t;
int OpenPortDev(char *dev,int* fd);
功能描述:
打开端口设备。
参数:
dev: - 端口设备名称,如/dev/port5
fd: - 返回文件句柄
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
15.3 ClosePortDev函数
函数定义:
int ClosePortDev(int fd);
功能描述:
关闭端口设备。
参数:
fd: - 文件句柄
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
int SetPortCfg(int fd, unsigned char bank, unsigned char width);
功能描述:
设置端口属性。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
bank: - 端口的Bank配置
width: - 端口的读写宽度(8/16/32),与硬件平台有关)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
1、端口的Bank及读写width由硬件配置决定
15.5 GetPortCfg函数
函数定义:
int GetPortCfg(int fd, unsigned char *bank, unsigned char *width);
功能描述:
读取端口属性。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
bank: - 返回端口的Bank配置
width: - 返回端口的读写宽度(8/16/32),与硬件平台有关)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
功能描述:
16-bit读端口。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
addr: - 端口的偏差地址
返回值:
成功返回读取值,否则返回-1
备注:
1、addr必须2字节对齐
15.7 OutPortw函数
函数定义:
inline int OutPortw(int fd, unsigned long addr, short data);
功能描述:
16-bit写端口。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
addr: - 端口的偏差地址
data: - 数值
返回值:
成功返回ERROR_OK,否则返回ERROR_FAIL。
备注:
1、addr必须2字节对齐
功能描述:
32-bit读端口。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
addr: - 端口的偏差地址
返回值:
成功返回读取值,否则返回-1
备注:
1、addr必须4字节对齐
15.9 OutPortl函数
函数定义:
inline int OutPortl(int fd, unsigned long addr, short data);
功能描述:
32-bit写端口。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
addr: - 端口的偏差地址
data: - 数值
返回值:
成功返回ERROR_OK,否则返回ERROR_FAIL。
备注:
1、addr必须4字节对齐
功能描述:
8-bit读端口。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
addr: - 端口的偏差地址
返回值:
成功返回读取值,否则返回-1
备注:
无
15.11 OutPortb函数
函数定义:
inline int OutPortb(int fd, unsigned long addr, short data);
功能描述:
8-bit写端口。
参数:
fd: - 文件句柄(即OpenPortDev()的返回值)
addr: - 端口的偏差地址
data: - 数值
返回值:
成功返回ERROR_OK,否则返回ERROR_FAIL。
备注:
无
16、用户层GPIO操作函数
//*-----------------------------------------------------------//* 用户层GPIO操作相关部分
//* 注:需硬件支持
//*
//*----------------------------------------------------------- 16.1 预定义
GPIO端口定义:
#define PORTA_GPIO(x) x
#define PORT0_GPIO(x) PORTA_GPIO(x)
#define PORTB_GPIO(x) (32+x)
#define PORT1_GPIO(x) PORTB_GPIO(x)
#define PORTC_GPIO(x) (64+x)
#define PORT2_GPIO(x) PORTC_GPIO(x)
#define PORTD_GPIO(x) (96+x)
#define PORT3_GPIO(x) PORTD_GPIO(x)
#define PORTE_GPIO(x) (128+x)
#define PORT4_GPIO(x) PORTE_GPIO(x)
#define PORTF_GPIO(x) (160+x)
#define PORT5_GPIO(x) PORTF_GPIO(x)
端口类型定义:
typedef enum {
PIO_MODE_OUT = 0,
PIO_MODE_IN,
} gpio_mode_t;
16.2 SetGPIOCfg函数
函数定义:
int SetGPIOCfg(int gpio, gpio_mode_t attr);
功能描述:
设置GPIO的端口属性。
参数:
gpio: - gpio端口
attr: - 指定GPIO的属性(模式、内部电阻状态、滤波器等等)
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
16.3 GPIOOutValue函数
函数定义:
int GPIOOutValue(int gpio, int val);
功能描述:
设置GPIO端口输出状态。
参数:
gpio: - gpio端口
val: - 输出状态值
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
16.4 GPIOInValue函数
函数定义:
int GPIOInValue(int gpio,int *state);
功能描述:
读GPIO端口输入。
参数:
gpio: - gpio端口
state: - 返回GPIO输入状态
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无
16.4 FreeGPIOCfg函数
函数定义:
int FreeGPIOCfg(int gpio);
功能描述:
释放GPIO控制。
参数:
gpio: - gpio端口
返回值:
成功返回ERROR_OK(==0);
失败返回(ERROR_INPARA/ERROR_TIMEOUT/ERROR_SYS/ERROR_NOSUPPORT/ERROR_FAIL)
备注:
无。