红外按键

Overview

以 AC638N 为例,红外遥控器发送红外信号,利用过滤模块及timer,检测红外接收头的波形,识别收到的红外信号的编码。提供识别红外信号编码的应用示例、工程配置、API 介绍和常见问题。

应用示例

  • 识别红外信号编码的具体源代码详见 sdk/bsp/AC638N/src/irflt.c

  • irflt.c 中参考示例如下:

    /*************************** 以下是SDK参考示例 ****************************/
    // *INDENT-OFF*
    IRFLT_PLATFORM_DATA_BEGIN(test_irflt_pdata)
        .ir_io = IO_PORTC_02,   //红外信号捕获引脚
        .timer_num = 5,         //选用timer5
    IRFLT_PLATFORM_DATA_END()
    
    void irflt_test(void)
    {
        log_info("*****************  irflt test  ***************");
        irflt_init((void *)&test_irflt_pdata);
    
        u8 ir_val = 0;
        extern void wdt_clr();
        while (1) {
            wdt_clr();
            ir_val = get_irflt_value();
            if (ir_val != 0xff) {
                log_info("ir_val = %d", ir_val);
            }
            delay(100000);
        }
    }
    

工程配置

  • sdk/apps/main.c 中函数 user_main() 添加如下工程代码:

    int user_main()
    {
        extern void irflt_test(void);
        irflt_test();
    }
    
  • 编译下载后,PC2 上连接红外接收头,按下红外遥控器上的按键,观察打印的红外按键健值。

API参考

识别红外信号编码常用相关 API 介绍,具体软件代码见 sdk/bsp/AC638N/src/irflt.c

Functions

u8 get_irflt_value(void)

获取timer输入捕捉红外解码的数值

Returns:

解码后的值

u8 ir_io_suspend(void)

IO复用时,IO挂起函数

Returns:

0:挂起成功, 1:挂起是吧

u8 ir_io_resume(void)

IO复用时,IO恢复函数

Returns:

0:恢复成功

void irflt_init(void *pdata)

红外初始化函数

Parameters:

pdata – 初始化的参数结构体地址 : struct irflt_platform_data *

void irflt_test(void)

红外参考示例函数