找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2639|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

關(guān)于輝芒微單片機觸摸程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:604515 發(fā)表于 2023-8-4 16:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這是一款輝芒微的觸摸芯片,現(xiàn)在在官方的調(diào)試軟件里,導(dǎo)出到工程,現(xiàn)在不會操作了,怎么樣寫:觸摸一下,LED1亮,觸摸5秒,LED2亮,

/**
  *********************************************************************************
  * @file                main.c
  * @author              FMD AE
  * @brief               Device: FT62F28X
  *                 Memory: Flash 8KX14b, EEPROM 128X8b, SRAM 616X8b
  *                 主函數(shù),touch庫的使用示例        
  * @version             V1.0.0           
  * @data                    2023-4-19
*/


//===========================================================
//include definition
//===========================================================
#include        "SYSCFG.h";
#include        "touch.h";
#include        "led.h";
#include        "uart.h"


//===========================================================
//Variable definition
//===========================================================


unsigned char strongest = 0; //demo_test
unsigned char Sav_strongest = 0; //demo_test
unsigned long Sav_single,single;


unsigned char temp = 0;
void ConmunicateToPc(void);
void TSC_Scan(void);
void SleepProcess(void);
void Get_Key_Demo(void);
/******************************************************************************
  * @brief  DelayUs program
  * @Description  延時函數(shù)
  * @param  time
  * @note   
  * @retval  None
  *****************************************************************************
*/


void DelayUs(unsigned int Time)
{   
        unsigned int a;
        for(a=0;a<Time;a++)
        {
                NOP();
        }
}


/*-------------------------------------------------
*        函數(shù)名稱:DelayMs
*        功能:   短延時函數(shù)
*        輸入?yún)?shù):Time延時時間長度 延時時長Time ms
*        返回參數(shù):無
-------------------------------------------------*/
void DelayMs(unsigned char Time)
{
        unsigned char a,b;
        for(a=0;a<Time;a++)
        {
                for(b=0;b<5;b++)
                {
                         DelayUs(197); //快1%
                }
        }
}


/******************************************************************************
  * @brief  interrupt ISR        program
  * @Description  中斷入口函數(shù) ,注意BANK的切換
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/


void interrupt ISR(void)
{
                //進中斷時bank保護
                if(AUXPGE==0) //BANK0-3
                {
                        temp = 0;
                }
                else
                {
                        AUXPGE = 0;
                        temp = 1;
                }  
                  
        //進中斷時bank保護恢復(fù)
                if(AUXPGE==0)//BANK0-3
                {
                        AUXPGE = temp ;
                }
                else
                {
                        AUXPGE = 0;
                        AUXPGE = temp ;
                }
}


/******************************************************************************
  * @brief  Initialize_Communication program
  * @Description  應(yīng)用程序應(yīng)在系統(tǒng)初始化時必須把它們寫為合適的值,
  *                        特別是各種使能位,以免產(chǎn)生不必要的中斷及額外功耗。
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/
void Initialize_Communication(void)
{
  //I2C 模塊
  I2CCR1 = 0;
  I2CCR2 = 0;
  I2CADDR = 0;
  I2CCCR = 0;
  I2CDAT = 0;
  I2CISR = 0;
  //SPI 模塊
  SPIDAT = 0;
  SPICR0 = 0;
  SPICFG = 0;
  SPISCR = 0;
  SPICRCP = 0;
  SPITXCRC = 0;
  SPIRXCRC = 0;
  SPIIER = 0;
  SPICR1 = 0;
  SPISTAT = 0;
  //UART 模塊
  UR0DATL = 0;
  UR0DATH = 0;
  UR0CR1 = 0;
  UR0CR2 = 0;
  UR0BRRL = 0;
  UR0STAT = 0;
  UR1DATL = 0;
  UR1DATH = 0;
  UR1CR1 = 0;
  UR1CR2 = 0;
  UR1BRRL = 0;
  UR1STAT = 0;
}


/******************************************************************************
  * @brief  SYS_INITIAL        program
  * @Description  系統(tǒng)時鐘、IO初始化
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/
///*
void SYS_INITIAL(void)
{
         
        OSCCON = SYS_OSCCON;//0B01110001;    //WDT 32KHZ IRCF=110=16MHZ/4=4MHZ,0.25US/T
                                                        //Bit0=1,系統(tǒng)時鐘為內(nèi)部振蕩器
                                                        //Bit0=0,時鐘源由FOSC<2:0>決定即編譯選項時選擇
                           
        OPTION = 0B00001000;        //Bit3 PSA   預(yù)分頻器分配位 0= 預(yù)分頻器分配給Timer0模塊 1:分配給WDT
                                                        //Bit2:0:預(yù)分頻比選擇位 000: 1:2
   
        DelayMs(40);                         //為進入debug模式延時大于20ms
   
    INTCON = 0;                          //暫禁止所有中斷
   
        PORTA = 0;
        PORTB = 0b00000010;
    PORTD = 0;
    PORTC = 0;
   
    //**********特別注意*********************************************************//
    //PC1:由于F283B,F285B的PB7與PC1打在一起,如果用PB6PB7做debug模式那么PC1需要設(shè)為輸入
    //PC6:當(dāng)需要用PC6做debug模式時,需要設(shè)為輸入
    //PC7:由于F283B,F285B的PC7與PD5打在一起, PD5與PC7要配置相同,設(shè)為輸入
    //PD3:由于F283X,F285B,F286A,F287A的PD3與GND打在一起則禁止輸出高或使能內(nèi)部上拉,設(shè)為輸入
    //    由于F287C的PD3與VDD打在一起則禁止輸出低或使能內(nèi)部下拉,設(shè)為輸入  
   
    TRISA = TRISA_CONFIG;                // 0-輸出 1-輸入     RA4 - //0B00000000
    TRISB = TRISB_CONFIG;                // B4-B7  TK5-TK2    PB7--touch   //0B00000000
    TRISC = TRISC_CONFIG;         //  0B00000000
    TRISD = TRISD_CONFIG;        // TKCAP_PD5設(shè)為輸入   //0B00101000
    //**********特別注意*********************************************************//
   
    ANSEL1 = 0B10000000; //TKCAP_PD5_AN15設(shè)為模擬輸入腳               
   
        BANKSEL4_7;
        WPUA = 0B00000000;     //PA端口上拉控制 1-開上拉 0-關(guān)上拉
    WPUB = 0B00000000;
        WPUC = 0B00000000;
        WPUD = 0B00000000;
        WPDA = 0B00000000;     //PA端口上拉控制 1-開上拉 0-關(guān)上拉
    WPDB = 0B00000000;
        WPDC = 0B00000000;
        WPDD = 0B00000000;   
    BANKSEL0_3;               
  
}


/******************************************************************************
  * @brief  WDT_INITIAL        program
  * @Description  初始化設(shè)置看門狗為16位計數(shù)器,用于SLEEP模式的128ms喚醒
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/


void WDT_INITIAL(void)
{
        CLRWDT();                             //清看門狗
        WDTCON = 0B00001111;    //bit[6:5]WCKSRC=00=LIRC(32K)
                                                        //bit[4:1]WDTPS=0110=1:4096,預(yù)分頻1:1 定時時間=(4096*1)/32000=128ms  
                                                        //bit[0]SWDTEN= 1 開啟                                                
}


/******************************************************************************
  * @brief  main        program
  * @Description 主函數(shù)
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/




void main(void )
{
        
    Initialize_Communication();//必做,上電復(fù)位值
    SYS_INITIAL();//系統(tǒng)時鐘、IO初始化


    //touch庫資源使用詳情請看touch.h說明
    TSC_INITIAL();//觸摸按鍵初始化
    //低功耗定時,請勿關(guān)閉
        WDT_INITIAL(); //看門狗初始化


    PEIE = 1;  //使能外設(shè)中斷
        GIE = 1;  //使能全局中斷
   
//        LED(); //led.c  demo_test
        while(1)
        {
                //清看門狗   
                CLRWDT();  
                //按鍵掃描
                TSC_Scan();
                if(TSC_DataProcessing()== 1) //返回1表示所有按鍵處理完成一次。
                {
                        Get_Key_Demo();                                                   
                }
            
        }               
}
/******************************************************************************
  * @brief  SleepProcess        program
  * @Description 低功耗處理函數(shù),若未選擇低功耗功能,SleepProcess() 在實際工程中可以刪除,
                                雖然已通過宏裁剪,但是函數(shù)也會編譯占用4byte rom和 占用cpu執(zhí)行時間。
                1. bSleepEnable用于使能低功耗功能,如程序滿足休眠條件之后,請將bSleepEnable置1;
                2. bSleepMode為觸摸庫標志,用戶不允許操作。
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/
void SleepProcess(void)
{
#ifndef TOUCH_DEBUG  
        #ifdef _DEF_LOW_POWER  
//        if(PB7 == 0)//檢測到PB7低電平進入休眠
//        {
                bSleepEnable = 1;  
//        }
        if(bSleepMode)        //滿足此條件,說明程序?qū)⒘⒓催M入低功耗,請將GPIO及其它耗電外設(shè)關(guān)閉,以達到最低功耗
    {
               
    }
    while(bSleepMode)
    {
                TSC_SleepPrcoessing();
        CLRWDT();  
                TSC_Sleep();
//                if(PB7 == 1)//檢測到PB7高電平退出休眠
//                {
//                        bSleepEnable = 0;  
//                }        
    }
        #endif
#endif
}


/******************************************************************************
  * @brief  TSC_Scan program
  * @Description 請勿刪除此函數(shù)
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/
void TSC_Scan(void)
{
        #ifndef TOUCH_DEBUG
        TSC_Start();
    #else
    TSC_Start_Test();
    ConmunicateToPc();
    #endif
}


/******************************************************************************
  * @brief  Get_Key_Demo program
  * @Description 獲取觸摸按鍵示例,用戶參考實現(xiàn)自己的功能
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/
void Get_Key_Demo(void)
{        
    /*只有調(diào)用CS庫才能獲取cs按鍵 TSC_GetCsKey();獲取當(dāng)前按下的一個按鍵*/
    strongest = TSC_GetCsKey();            
    if(Sav_strongest != strongest)
    {
//        LED_Scan();         


                        
    }
    Sav_strongest = strongest;
   
    /*獲取多個按鍵,可以用來實現(xiàn)組合按鍵功能*/
    single = TSC_GetLocalKey();     
    if(Sav_single != single)
    {
//        LED_Local_Scan();                 
    }
    Sav_single = single;     
  
}








//===========================================================


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:1090708 發(fā)表于 2023-8-4 17:19 | 只看該作者
有專門的調(diào)試軟件啊
回復(fù)

使用道具 舉報

板凳
ID:123289 發(fā)表于 2023-8-5 09:56 | 只看該作者
再更細致地研讀芯片手冊。
回復(fù)

使用道具 舉報

地板
ID:739727 發(fā)表于 2024-6-12 23:53 | 只看該作者
用定時器掃描
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表