eecs-bsp-test-code-2/inc/IR.h

85 lines
8.3 KiB
C
Raw Permalink Normal View History

2022-08-22 14:51:00 +08:00
/********************************** IR V3.5a 说明 ***********************************************
IR模块用于控制STC-B学习板PWMPPM红外编码协议的发送PWM红外编码的接收
IR模块提供1个驱动函数5API应用函数1enumEventIrRxdIr上收到一个数据包
IR模块已不与串口通信uart和uart2
(1) void IrInit(unsigned char Protocol)IR模块初始化函数
unsigned char Protocol
Protocol NEC_R05d = 13.1*Protocol uS
(2) char IrTxdSet(unsigned char *pt,unsigned char num)IR发送
unsigned char *pt
11 //单位协议基本时间片的个数值最大255。如当协议基本时间片为0.56mS时,
22 //如当协议基本时间片为0.56mS时数值1代表0.56mS时长3代表1.68mS时长,......
......
......
n红外发送时长n红外发送停止时长
unsigned char num
enumIrTxOKsys正确接受sys将尽硬件资源最大可能及时发送数据
enumIrTxFailure
IrPrint()
38KHz红外遥控器功能
(3) char IrPrint(void *pt, unsigned char num)//以NEC的PWM编码方式发送数据可用于符合该函数发送格式的部分电器遥控器与GetIrRxNum()、SetIrRxd()配合,可进行红外双机通信;等
//红外发送数据格式为引导码16*基本时间片8*基本时间片。0.56mS时发9mS、停4.5mS
"0" -- 1*1*
"1" -- 1*3*
1*1*
//非阻塞函数该函数从被调用到返回大约1uS左右时间,但所指定的数据经红外发送完毕则需要较长时间每字节大约需要10mS量级时间
//IrPrint()函数用法完全类似与uart模块的Uart1Print()和Uart2Print()用法仅num参数为unsigned char可参照使用
void *pt
unsigned char num
enumIrTxOKsys正确接受sys将尽硬件资源最大可能及时发送数据
enumIrTxFailure
IrTxdSet()
(4) void SetIrRxd(void *RxdPt,unsigned char RxdNmax)
1numEventIrRxd事件IrPrint()
void char *RxdPt
unsigned char RxdNmaxNmax后
(5) unsigned char GetIrRxNum(void)SetIrRxd()使IrPrint()
<= Ir接收缓冲区最大字节数RxdNmax定义RxdNmax
numEventIrRxd事件产生后访
(6) char GetIrStatus(void) Ir状态
enumIrFree
enumIrBusy
(7) enumEventIrRxdIr上收到一个符合格式的数据包IrPrint()
Ir接收缓冲区最大字节数RxdNmax定义enumEventIrRxd事件
(1) 12.
(2) 12
(3) 12
a1USB接口上2EXT扩展485485
b500800 bps
c
18008400450 20218242021115
*/
#ifndef _IR_H_
#define _IR_H_
extern void IrInit(unsigned char Protocol); //IR模块初始化。参数定义红外IR基本周期
enum IrProtocalName {NEC_R05d=43}; //定义红外IR协议基本周期 = 43*1000/76 = 566 (uS)
extern char IrTxdSet(unsigned char *pt,unsigned char num); //以自由编码方式控制IR发送可用于编写任意编码协议的红外发送如各种电器红外遥控器等
extern char IrPrint(void *pt, unsigned char num); //以NEC的PWM编码方式发送数据可用于符合该函数发送格式的部分电器遥控器与SetIrRxd()配合,可进行红外双机通信;等
extern void SetIrRxd(void *RxdPt,unsigned char RxdNmax); //设置红外接收数据包存放位置、每个数据包最大字节数。收到一个数据包至少1字节数据时将产生numEventIrRxd事件。与它机IrPrint()函数配合,可实现红外数据通信
extern unsigned char GetIrRxNum(void); //当收到一个数据包的numEventIrRxd事件产生后可用该函数获取红外接收数据包的大小字节数。其它时间访问其值不确定
extern char GetIrStatus(void); //获取Ir状态,enumIrFree:红外接口空闲, enumIrBusy,红外接口正忙
enum IrActName {enumIrFree=0 //红外发送空闲
,enumIrBusy // 忙
,enumIrTxOK // 发送成功
,enumIrTxFailure}; // 发送失败(正忙)
#endif