3)代码分析
a. 设置SYS->GPD_MFPH寄存器,使能PD8引脚用于触摸按键8,使能PD9引脚用于触摸按键9。
b. 调用TK_Open函数使能触摸键功能。
c. 从这里开始重点注意是调用的是新唐公司写好的触摸按键的静态库文件,虽然该库文件没有开源,但是通过tklib.h可以知道这些函数的使用方法。TKLIB_Init用于初始化触摸按键的所有参数,而这些参数需要从Data Flash中0x3F800地址处进行读取;若有正确的触摸按键参数存储在Data Flash中,则调用里面的参数初始化触摸按键,并返回值大于0;如果没有正确的参数存储在Data Flash中,需要在代码进行相关的初始化。
d. TKLIB_SetGlobal设置全局变量值,每个触摸按键的AVCCH电压选择为3/16VDD、触摸按键感应脉冲宽度时间控制为1us、
触摸按键感应时间控制为128us、设置参考全局的触摸按键的电容补偿值为0x40,寄存器为TK_CCBDAT4。
e. TKLIB_SetKeyConfig用于设置触摸按键的属性,重点注意的是,若有触摸按键作为参考对象时,必须加上宏定义为TKLIB_SENMODE_REF,否则加上TKLIB_SENMODE_POL宏定义,作为正常触发的触摸按键。
f. TKLIB_SetParam用于设置触摸按键的流控制功能。
g. 一切设置准备就绪后,就调用TK_ENABLE_SCAN_KEY函数使能对TK8触摸按键进行扫描。
h. 调用TKLIB_AutoCalibration自动计算每个触摸按键电容补偿值。
i. 然后调用TKLIB_DetectKey获取检查哪个触摸按键被触发。
4)下载验证
通过NuLink仿真下载器将程序下载到SmartM-M451迷你板后,进入单片机多功能调试助手中的串口调试界面,串口打印输出信息结果如下图22.3.8。当用手指按压触摸按键时,输出打印“TK8 is touched”,LED1亮如图22.3.9;当手指离开触摸按键时,输出打印“TK8 is released”,LED1灭如图22.3.10。