7. 触摸按键

Overview

以 AC638N 为例,提供触摸按键应用示例、工程配置、API 介绍和常见问题。

7.1. 应用示例

  • 具体的触摸按键源代码详见 sdk/bsp/AC638N/src/ctmu.c

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

    #include "asm/ctmu.h"
    
    static const struct ctmu_key_port test_touch_ctmu_port[] = {
        //按键0
        {
            .press_delta = 10000,   //变化量的阈值
            .ch_io = CTMU_CH_PC02,  //通道号
            .key_value = 0x12,      //预留的按键值
        },
        //按键1
        {
            .press_delta = 10000,   //变化量的阈值
            .ch_io = CTMU_CH_PB06,  //通道号
            .key_value = 0x34,      //预留的按键值
        },
    };
    CTMU_PLATFORM_DATA_BEGIN(test_ctmu_pdata)
        .num = ARRAY_SIZE(test_touch_ctmu_port),
        .port_list = test_touch_ctmu_port,
    CTMU_PLATFORM_DATA_END()
    
    void ctmu_test(void)
    {
        log_info("*****************  ctmu test  ***************");
        ctmu_init((void *)&test_ctmu_pdata);
    
        u8 key_num = 0;
        extern void wdt_clr();
        while (1) {
            wdt_clr();
            key_num = get_ctmu_value();
            if (key_num != 0xff) {
                log_info("key_num = %d", key_num);
            }
            delay(100000);
        }
    }
    

7.2. 工程配置

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

    int user_main()
    {
        extern void ctmu_test(void);
        ctmu_test();
    }
    
  • 编译下载后,在开发板的 PA2 和 PC2 分别通过一根杜邦线连接到铜牌,触摸铜牌,会打印对应铜牌的编号。

7.3. API参考

ADC常用相关API介绍,具体软件代码见 sdk/bsp/AC638N/src/ctmu.c

Functions

int ctmu_init(void *pdata)

ctmu总初始化函数

Parameters

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

Returns

0,成功 非0,失败

u8 get_ctmu_value(void)

获取注册的触摸按键的序号

Returns

按键序号

void ctmu_test(void)

sdk提供的参考函数