[国产单片机] 辉芒微单片机触摸功能有时会失灵

[复制链接]
834|0
hitperson 发表于 2025-9-28 13:28 | 显示全部楼层 |阅读模式
用的FT62FCC单片机, 源码如下:
main函数部分:

        while(1)
        {
                //清看门狗   
                //CLRWDT();  
                //按键扫描       
        static unsigned char last = 0, last_used = 0;
        unsigned char cur = 0;

                TSC_Scan();
            
                if(TSC_DataProcessing()== 1) //返回1表示所有按键处理完成一次,请和TSC_Scan一起使用,否则影响扫描速度。
                {
                        strongest = TSC_GetCsKey();                //返回当前按压信号最强的按键通道号;
            single = TSC_GetLocalKey();         //返回当前按键按下的通道号       
            cur = single & 0xff;       


            if(cur > 0) {
                if(cur != last) {
                    last = cur;
                    if ( cur & 0x0f ) //mode change
                    {
                        key_timer_cnt = KEY_TIMER_FUNC_DE;
                    }else {
                        if (cur & 0x10)
                        {
                           key_timer_cnt = KEY_TIMER_STEAM_DE;
                        }else {
                            key_timer_cnt = KEY_TIMER_POWER_DE;
                        }                  
                        
                    }  
                }else {
                    if(key_timer_cnt == 0 && last_used != last) {
                        //process key
                        last_used = last;
                        key_process(cur);
                    }
                }
            }else {
                last = 0;
                last_used = 0;
            }
                        
            }

///////////////////////////////////////////////////////////////////////////////
void key_process(unsigned char kk) {
    UART_bag[3] &=0B11000000;
    UART_bag[3] |= kk;
    Send_Bag();
    if(kk < 0x10) {
        for(unsigned char i = 0; i < 4; i++) {
            if(kk == (1 << (i))) {
                led_switch(i+3);
                break;
            }            
        }        
    }   
}

/////////////////////////////////////////
定时器部分
void interrupt ISR(void)
{
   uint8_t  i;
        //定时器2的中断处理**********************
        if(TMR2IE && TMR2IF)                        //100us中断一次 = 5KHz
        {
                TMR2IF = 0;
        time_ms++;

        if(time_ms>9)
        {
            if(key_timer_cnt) {
                    key_timer_cnt--;
            }

这个程序在99%的情况下能正确识别触摸按键,偶尔会识别不到,表现为触摸卡死的状态,单片其它部分还在正常运行,比如串口收发


您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部