IR_ENCODER ####################### 红外编码发送驱动,该驱动仅支持 NEC格式 ir_encoder_init ------------------------------ 红外发送功能初始化。 原型: .. code-block:: c void ir_encoder_init(u32 gpio, u32 freq, u32 duty); 参数: ========== ==================== gpio 输出IO freq 载波频率 duty 占空比,满量程10000, 例如5123, 51.23% 返回值 无 ========== ==================== ir_encoder_deinit ------------------------------ 红外发送功能释放。 原型: .. code-block:: c void ir_encoder_deinit(); 参数: ========== ==================== 返回值 无 ========== ==================== ir_encoder_tx ------------------------------ 启动发送。 原型: .. code-block:: c u32 ir_encoder_tx(u8 ir_addr, u8 ir_cmd, u8 repeat_en); 参数: ========== ==================== ir_addr 地址码 ir_cmd 命令码 repeat_en 1:使能重复码发送 0:只发送一次数据 返回值 无 ========== ==================== ir_encoder_repeat_stop ------------------------------ 重复码发送关闭,和 ir_encoder_tx(addr, cmd, 1) 配套使用。 原型: .. code-block:: c void ir_encoder_repeat_stop(); 参数: ========== ==================== 返回值 无 ========== ==================== ir_encoder参考demo,也可参考 ir_encoder_decoder_demo.c 文件 -------------------------------------------------------------------------- .. code-block:: c void ir_encoder_demo() { printf("ir_encoder_demo()\n"); ir_encoder_init(IO_PORTA_01, 38000, 3000); //红外信号输出IO_PORTA_01, 频率38000, 占空比30.00% /* ir_encoder_init(IO_PORTA_00, 38000, 10000); //红外信号输出IO_PORTA_00, 频率38000, 占空比100.00% */ u8 addr = 0x4c; //设置红外地址 0x4c u8 cmd = 0x4a; //设置红外命令 0x4a u8 repeat_en = 1; //重复发送使能 ir_encoder_tx(addr, cmd, repeat_en); udelay(2 * 1000 * 1000); ir_encoder_repeat_stop(); //停止发送 gptimer_dump(); while (1) { wdt_clear(); } }