久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2582|回復: 3
打印 上一主題 下一主題
收起左側

關于輝芒微單片機觸摸程序

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

/**
  *********************************************************************************
  * @file                main.c
  * @author              FMD AE
  * @brief               Device: FT62F28X
  *                 Memory: Flash 8KX14b, EEPROM 128X8b, SRAM 616X8b
  *                 主函數,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  延時函數
  * @param  time
  * @note   
  * @retval  None
  *****************************************************************************
*/


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


/*-------------------------------------------------
*        函數名稱:DelayMs
*        功能:   短延時函數
*        輸入參數:Time延時時間長度 延時時長Time ms
*        返回參數:無
-------------------------------------------------*/
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  中斷入口函數 ,注意BANK的切換
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/


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


/******************************************************************************
  * @brief  Initialize_Communication program
  * @Description  應用程序應在系統初始化時必須把它們寫為合適的值,
  *                        特別是各種使能位,以免產生不必要的中斷及額外功耗。
  * @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  系統時鐘、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,系統時鐘為內部振蕩器
                                                        //Bit0=0,時鐘源由FOSC<2:0>決定即編譯選項時選擇
                           
        OPTION = 0B00001000;        //Bit3 PSA   預分頻器分配位 0= 預分頻器分配給Timer0模塊 1:分配給WDT
                                                        //Bit2:0:預分頻比選擇位 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需要設為輸入
    //PC6:當需要用PC6做debug模式時,需要設為輸入
    //PC7:由于F283B,F285B的PC7與PD5打在一起, PD5與PC7要配置相同,設為輸入
    //PD3:由于F283X,F285B,F286A,F287A的PD3與GND打在一起則禁止輸出高或使能內部上拉,設為輸入
    //    由于F287C的PD3與VDD打在一起則禁止輸出低或使能內部下拉,設為輸入  
   
    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設為輸入   //0B00101000
    //**********特別注意*********************************************************//
   
    ANSEL1 = 0B10000000; //TKCAP_PD5_AN15設為模擬輸入腳               
   
        BANKSEL4_7;
        WPUA = 0B00000000;     //PA端口上拉控制 1-開上拉 0-關上拉
    WPUB = 0B00000000;
        WPUC = 0B00000000;
        WPUD = 0B00000000;
        WPDA = 0B00000000;     //PA端口上拉控制 1-開上拉 0-關上拉
    WPDB = 0B00000000;
        WPDC = 0B00000000;
        WPDD = 0B00000000;   
    BANKSEL0_3;               
  
}


/******************************************************************************
  * @brief  WDT_INITIAL        program
  * @Description  初始化設置看門狗為16位計數器,用于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,預分頻1:1 定時時間=(4096*1)/32000=128ms  
                                                        //bit[0]SWDTEN= 1 開啟                                                
}


/******************************************************************************
  * @brief  main        program
  * @Description 主函數
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/




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


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


    PEIE = 1;  //使能外設中斷
        GIE = 1;  //使能全局中斷
   
//        LED(); //led.c  demo_test
        while(1)
        {
                //清看門狗   
                CLRWDT();  
                //按鍵掃描
                TSC_Scan();
                if(TSC_DataProcessing()== 1) //返回1表示所有按鍵處理完成一次。
                {
                        Get_Key_Demo();                                                   
                }
            
        }               
}
/******************************************************************************
  * @brief  SleepProcess        program
  * @Description 低功耗處理函數,若未選擇低功耗功能,SleepProcess() 在實際工程中可以刪除,
                                雖然已通過宏裁剪,但是函數也會編譯占用4byte rom和 占用cpu執行時間。
                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)        //滿足此條件,說明程序將立即進入低功耗,請將GPIO及其它耗電外設關閉,以達到最低功耗
    {
               
    }
    while(bSleepMode)
    {
                TSC_SleepPrcoessing();
        CLRWDT();  
                TSC_Sleep();
//                if(PB7 == 1)//檢測到PB7高電平退出休眠
//                {
//                        bSleepEnable = 0;  
//                }        
    }
        #endif
#endif
}


/******************************************************************************
  * @brief  TSC_Scan program
  * @Description 請勿刪除此函數
  * @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 獲取觸摸按鍵示例,用戶參考實現自己的功能
  * @param  None
  * @note   
  * @retval  None
  *****************************************************************************
*/
void Get_Key_Demo(void)
{        
    /*只有調用CS庫才能獲取cs按鍵 TSC_GetCsKey();獲取當前按下的一個按鍵*/
    strongest = TSC_GetCsKey();            
    if(Sav_strongest != strongest)
    {
//        LED_Scan();         


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








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


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

使用道具 舉報

沙發
ID:1090708 發表于 2023-8-4 17:19 | 只看該作者
有專門的調試軟件啊
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜影视 | 黄色网址大全在线观看 | 久久精品二区亚洲w码 | 久久久.com | 欧美日韩一区不卡 | 美女天天操 | 精品一区二区三区在线播放 | 色综合一区二区三区 | 亚洲精品字幕 | 操操日| 色爱综合网 | 亚洲一区二区三区四区五区中文 | 中文字幕在线观看第一页 | 久久精品国产99国产精品亚洲 | 欧美成人精品二区三区99精品 | 色爽女 | 日韩欧美视频免费在线观看 | 日韩在线观看视频一区 | 久久精品国产精品青草 | 久久久国产一区二区三区 | 亚洲精品黑人 | 丝袜 亚洲 欧美 日韩 综合 | 国产乱码一二三区精品 | 国产日韩一区二区 | 久久久久久国模大尺度人体 | 免费三级网 | av毛片 | 精品欧美一区二区在线观看欧美熟 | 欧美日韩国产在线观看 | 欧美综合一区 | 亚洲欧美一区在线 | 国产精品一区二区久久 | 久久精品99久久 | 国产精品免费一区二区三区四区 | 精品99在线 | 精品欧美一区二区三区久久久 | 国产精品国产a级 | 狠狠操天天干 | 日韩av手机在线观看 | 久久久久国产精品免费免费搜索 | 色在线免费 |