亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 移植正點(diǎn)原子觸摸屏實(shí)驗(yàn) [打印本頁(yè)]

作者: 2360763150    時(shí)間: 2019-12-30 21:15
標(biāo)題: 移植正點(diǎn)原子觸摸屏實(shí)驗(yàn)
      本帖是為了記錄我把正點(diǎn)原子觸摸屏移植到自己做的STM板子上,移植前我是參考的野火和正點(diǎn)原子的觸摸屏實(shí)驗(yàn)視頻教程。我自己做的板子和野火正點(diǎn)原子的芯片都是一樣的,都是STM32F103的芯片,但是就算芯片一樣,我移植的時(shí)候也是費(fèi)了很大的勁。
       我先看的是野火的觸摸屏實(shí)驗(yàn)教程,可是我原理大概看懂了之后發(fā)現(xiàn)還是對(duì)觸摸屏實(shí)驗(yàn)似懂非懂,所以我就去看了正點(diǎn)原子的視頻,正點(diǎn)原子觸摸屏實(shí)驗(yàn)比野火的簡(jiǎn)單了許多(我自己的理解),所以我就準(zhǔn)備移植正點(diǎn)原子的觸摸屏實(shí)驗(yàn)。我先把正點(diǎn)原子的觸摸屏驅(qū)動(dòng)拷貝到我的工程里,我的STM開(kāi)發(fā)板已經(jīng)打通了液晶的驅(qū)動(dòng),我再液晶的工程上新建了一個(gè)touch文件夾里面存放了正點(diǎn)原子的觸摸屏驅(qū)動(dòng)。對(duì)正點(diǎn)原子驅(qū)動(dòng)的更改主要如下。
//電阻/電容屏芯片連接引腳          
#define PEN                  PAin(8)                // INT
#define DOUT                 PBin(14)                 //  MISO
#define TDIN                 PBout(15)            // MOSI
#define TCLK                 PBout(13)            //  SCLK
#define TCS                  PBout(12)            //  CS


這一步主要是更改Touch。h文件中的我自己開(kāi)發(fā)板芯片連接的GPIO引腳。

//觸摸屏初始化                      
//返回值:0,沒(méi)有進(jìn)行校準(zhǔn)
//       1,進(jìn)行過(guò)校準(zhǔn)
u8 TP_Init(void)
{       
        if(lcddev_id==0X5510)                                //4.3寸電容觸摸屏//************************************************************************
        {

                return 0;
        }else if(lcddev_id==0X1963)                        //7寸電容觸摸屏
        {

                return 0;
        }else
        {
          GPIO_InitTypeDef  GPIO_InitStructure;

                //注意,時(shí)鐘使能之后,對(duì)GPIO的操作才有效
                //所以上拉之前,必須使能時(shí)鐘.才能實(shí)現(xiàn)真正的上拉輸出
                   
                 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA, ENABLE);         //使能PB,PF端口時(shí)鐘
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;                                 // PB1端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                 GPIO_Init(GPIOB, &GPIO_InitStructure);//B1推挽輸出
                 GPIO_SetBits(GPIOB,GPIO_Pin_13);//上拉
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;                                 // PB2端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  //上拉輸入
                 GPIO_Init(GPIOB, &GPIO_InitStructure);//B2上拉輸入
                 GPIO_SetBits(GPIOB,GPIO_Pin_14);//上拉               
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_15;                                 // F9,PF11端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                 GPIO_Init(GPIOB, &GPIO_InitStructure);//PF9,PF11推挽輸出
                 GPIO_SetBits(GPIOB, GPIO_Pin_12|GPIO_Pin_15);//上拉
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;                                 // PF10端口配置
                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                  //上拉輸入
                 GPIO_Init(GPIOA, &GPIO_InitStructure);//PF10上拉輸入
                 GPIO_SetBits(GPIOA,GPIO_Pin_8);//上拉               

                TP_Read_XY(&tp_dev.x[0],&tp_dev.y[0]);//第一次讀取初始化         
                I2C_EE_Init();                        //初始化24CXX
                if(TP_Get_Adjdata())return 0;//已經(jīng)校準(zhǔn)
                else                                          //未校準(zhǔn)?
                {                                                                                     
                        LCD_Clear(White);        //清屏//************************************************************************
                        TP_Adjust();                  //屏幕校準(zhǔn)  
                }                       
                TP_Get_Adjdata();       
        }
        return 1;                                                                          
}
這里是對(duì)觸摸屏初始化修改,前面如if(lcddev_id==0X5510)等的判斷都是對(duì)液晶屏的選擇,我移植使用的是電阻屏,所以把這些都刪除了。而且lcddev_id本來(lái)是正點(diǎn)原子對(duì)液晶定義的結(jié)構(gòu)體變量,我之前沒(méi)有使用正點(diǎn)原子的液晶驅(qū)動(dòng)是我自己的,所以我在touch。c文件前定義了這個(gè)變量,并且直接賦值。

u16 lcddev_id = 0;
u16 lcddev_dir = 1;

其它的函數(shù),凡是關(guān)于液晶的畫點(diǎn)等的都把函數(shù)改為自己的液晶驅(qū)動(dòng)函數(shù),這樣基本可以實(shí)現(xiàn)觸摸屏實(shí)驗(yàn)了。





歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1