本人小白一个,才开始接触STM32,看到电容触摸按键实验中的TPAD_SCAN函数,有点难以理解,故效仿实体按键重新写了一个TPAD_SCAN函数,
不支持连续按键,本人才疏学浅,如有不当请各位前辈指点。
整个工程中仅仅TPAD_SCAN函数不一样,其余函数与例程相同,故本贴只发布TPAD_SCAN函数及相关的一些参数。
前提:1MHz的采样频率,即Tpad_Init(72),计数一次约1us。
①通过串口调试助手得到tpad_default_val的值。打开串口调试助手后,按下战舰开发板上的RESET按键可复位程序,可得到tpad_default_val的值,本人得到的值如图,因人而异
得到的tpad_default_val的值约为18。
②确定门限值。将手指按住电容触摸按键,点击RESET按键,可得到电容按键按下后的充电时间,如图
得到的值约为60。这样就可以确定门限值的取值范围约为1-40,我们去取中间值20,即#define TPAD_GATE_VAL 20
③编写Tpad_Scan()函数。
u8 tpad_scan()
{
u8 flag = 0;
u16 maxval;
maxval = tpad_get_maxval(3); //采样三次得到充电时间最大值
if(maxval > (tpad_default_val + TPAD_GATE_VAL)) //电容触摸按键已按下
{
delay_ms(5); //消抖
maxval = tpad_get_maxval(1); //采样一次
if(maxval > (tpad_default_val + TPAD_GATE_VAL)) //再次确定按键已按下
flag = 1; //按下标志flag置1
maxval = tpad_get_maxval(1); //采样
while(!(maxval < (tpad_default_val + 10))) //等待按键释放
maxval = tpad_get_maxval(1);
}
return flag;
}
这种写法应该比较容易理解,如有不妥的地方,请批评指正,毕竟新人,多多指导。
一周热门 更多>