本帖最后由 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 完成设置
|