本帖最后由 jinglixixi 于 2022-10-6 18:02 编辑
在核心板上配有6个触摸按键,在进行参数设置时会面临这样的问题,即若每个触摸键对应一个数符的话,其按键数量显然是不够用的,为此最后是以增减数值的方式来实现,即分配4个键,分别用于+1、-1、移位及确认处理。那是否在例程的基础上就能轻松地来实现呢?其实并非如此简单,因为例程是为功能演示而设计的,若直接在它的基础上进行功能修改,会出现+1键或-1键在按下后,快速多次更改数值的情况。也就是说它缺少一个判别按键释放的过程,从而被视为是该按键是按下了多次的问题。解决该问题的主程序如下:int main(void){
u8 showNumber0=0;
GPIO_Configuration();
LEDC_Configuration();
RTC_Configuration();
BFTM_Configuration();
TKL_Configuration();
#ifdef HXT_UART_DEBUG
TKL_USART_Configuration();
#endif
LEDC_SetData(HTCFG_LEDC_COM_D4, NumberChar[0]);
showNumber0=0;
f=1;
while(f){
if(gIsUpdateChar)
{
LEDC_SetData(HTCFG_LEDC_COM_D4, NumberChar[showNumber0]);
gIsUpdateChar = FALSE;
}
Touch_Key_Main_Function();
if(TKL_Is_KeyPress(16)) // PAD2
{
if(showNumber0>0) showNumber0=showNumber0-1;
else showNumber0=9;
while(TKL_Is_KeyPress(16))
{
Touch_Key_Main_Function();
}
}
if(TKL_Is_KeyPress(17)) // PAD1
{
if(showNumber0<9)showNumber0=showNumber0+1;
else showNumber0=0;
while(TKL_Is_KeyPress(17))
{
Touch_Key_Main_Function();
}
}
if(TKL_Is_KeyPress(22)) // PAD4
{
n=n%100;
n=n*10+showNumber0;
LEDC_SetData(HTCFG_LEDC_COM_D1, NumberChar[n%1000/100]);
LEDC_SetData(HTCFG_LEDC_COM_D2, NumberChar[n%100/10]);
LEDC_SetData(HTCFG_LEDC_COM_D3, NumberChar[n%10]);
showNumber0=0;
LEDC_SetData(HTCFG_LEDC_COM_D4, NumberChar[showNumber0]);
while(TKL_Is_KeyPress(22))
{
Touch_Key_Main_Function();
}
}
if(TKL_Is_KeyPress(24)) // PAD6
{
while(TKL_Is_KeyPress(24))
{
Touch_Key_Main_Function();
}
n=n*10+showNumber0;
f=0;
}
}
while (1){
if(gIsUpdateChar)
{
LEDC_SetData(HTCFG_LEDC_COM_D1, NumberChar[n/1000]);
LEDC_SetData(HTCFG_LEDC_COM_D2, NumberChar[n%1000/100]);
LEDC_SetData(HTCFG_LEDC_COM_D3, NumberChar[n%100/10]);
LEDC_SetData(HTCFG_LEDC_COM_D4, NumberChar[n%10]|0X02);
gIsUpdateChar = FALSE;
}
}
}
其中,相应触摸键的功能设置如下: PAD1:+1(增1键) PAD2:-1(减1键) PAD4:<-(移位键) PAD6:CR(确认键) 经程序的编译和下载,其运行效果如图1至图3所示。为了便于观察确认后的效果,特在设置值的后面配上了一个小数点以示完成处理。此外,增减键是在数值0~9之间来递变的。移位键的功能则是使设置值向左移动,即数值增大10倍。
图1 设置数值图2 移位处理图3 完成设置
|