コード例 #1
0
/**
  * @brief: 触摸屏初始化  		    
  * @retval:0 - 没有进行校准
  *         1 - 进行过校准
  * @note:
  *   - T_SCK  -> PB1
  *   - T_CS   -> PB2
  *   - T_MISO -> PF8
  *   - T_MOSI -> PF9
  *   - T_PEN  -> PF10
  */
u8 TP_Init(void)
{			    		   
	RCC->APB2ENR|=1<<3;			//PB时钟使能	   
	RCC->APB2ENR|=1<<7;			//PF时钟使能	   
 	
	GPIOB->CRL&=0XFFFFF00F;	//PB1 PB2
	GPIOB->CRL|=0X00000330; 
	GPIOB->ODR|=3<<1;				//PB1 PB2 推挽输出 	 
	GPIOF->CRH&=0XFFFFF000;
	GPIOF->CRH|=0X00000838; //PF8-上拉输入  PF9-推挽输出  PF10-上拉输入
	GPIOF->ODR|=7<<8;				//PF8 PF9 PF10 全部上拉	  
	TP_Read_XY(&tp_dev.x,&tp_dev.y);//第一次读取初始化
 	IIC_Init();							//初始化IIC
 	while(AT24CXX_Check())	//检测不到24c02
	{
		LCD_ShowString(16,150,200,16,16,"24C02 Check Failed!");
		delay_ms(500);
		LCD_ShowString(16,150,200,16,16,"Please Check!      ");
		delay_ms(500);
	}
	if(TP_Get_Adjdata())return 0;	//已经校准
	else													//未校准
	{ 										    
		LCD_Clear(WHITE);						//清屏
		TP_Adjust();								//屏幕校准 
		TP_Save_Adjdata();	 
	}
	TP_Get_Adjdata();	
	return 1; 									 
}
コード例 #2
0
ファイル: test.c プロジェクト: sdlylshl/gprs_sim900a
int main(void)
{
	u8 key,fontok=0; 
   	Stm32_Clock_Init(9);	//系统时钟设置
	delay_init(72);			//延时初始化
	uart_init(72,115200); 	//串口1初始化 
	LCD_Init();				//初始化液晶 
	LED_Init();         	//LED初始化	 
	KEY_Init();				//按键初始化	 
	usmart_dev.init(72);	//usmart初始化	
 	USART2_Init(36,115200);	//初始化串口2 
	TP_Init();				//初始化触摸屏
	mem_init(SRAMIN);		//初始化内部内存池	    
 	exfuns_init();			//为fatfs相关变量申请内存  
  	f_mount(0,fs[0]); 		//挂载SD卡 
	key=KEY_Scan(0);  
	if(key==KEY_RIGHT)		//强制校准
	{
		LCD_Clear(WHITE);	//清屏
		TP_Adjust();  		//屏幕校准 
		TP_Save_Adjdata();	  
		LCD_Clear(WHITE);	//清屏
	}
	fontok=font_init();		//检查字库是否OK
	if(fontok||key==KEY_DOWN)//需要更新字库				 
	{
		LCD_Clear(WHITE);		   	//清屏
 		POINT_COLOR=RED;			//设置字体为红色	   	   	  
		LCD_ShowString(60,50,200,16,16,"ALIENTEK STM32");
		while(SD_Initialize())		//检测SD卡
		{
			LCD_ShowString(60,70,200,16,16,"SD Card Failed!");
			delay_ms(200);
			LCD_Fill(60,70,200+60,70+16,WHITE);
			delay_ms(200);		    
		}								 						    
		LCD_ShowString(60,70,200,16,16,"SD Card OK");
		LCD_ShowString(60,90,200,16,16,"Font Updating...");
		key=update_font(20,110,16,0);//从SD卡更新
		while(key)//更新失败		
		{			 		  
			LCD_ShowString(60,110,200,16,16,"Font Update Failed!");
			delay_ms(200);
			LCD_Fill(20,110,200+20,110+16,WHITE);
			delay_ms(200);		       
		} 		  
		LCD_ShowString(60,110,200,16,16,"Font Update Success!");
		delay_ms(1500);	
		LCD_Clear(WHITE);//清屏	       
	}  
	sim900a_test();
}
コード例 #3
0
ファイル: main.c プロジェクト: sdlylshl/DK5438_example
char Proc_TP_Adj(char *NC)
{
  unsigned int temp[8]                               ;
  Color     = Green                                  ;
  Color_BK  = Black                                  ;
  TP_Init()                                          ;
  Clear_LCD(Color_BK)                                ; 
  PutStringCN24(58,120,"触摸屏校正")                 ;
  Color     = Cyan                                   ;
  PutStringCN16(30,165,"请用触控笔点测试点中心")     ;
  for(;;)
  {
    Draw_Test_Point(20,20,Yellow)                    ;
    for(;;)
    {
      if(Read_TP_Twice(&temp[0],&temp[1]))  break    ;
      if(ReadKey()==Cancel)  return 0x00             ;
    }
    DrawRectFill(0,0,40,40,Color_BK)                 ;
    Wait_Pen_Up()                                    ;
  
    Draw_Test_Point(220,20,Yellow)                   ;
    for(;;)
    {
      if(Read_TP_Twice(&temp[2],&temp[3]))  break    ;
      if(ReadKey()==Cancel)  return 0x00             ;
    }
    DrawRectFill(200,0,40,40,Color_BK)               ;
    Wait_Pen_Up()                                    ;
    
    Draw_Test_Point(20,300,Yellow)                   ;
    for(;;)
    {
      if(Read_TP_Twice(&temp[4],&temp[5]))  break    ;
      if(ReadKey()==Cancel)  return 0x00             ;
    }
    DrawRectFill(0,280,40,40,Color_BK)               ;
    Wait_Pen_Up()                                    ;
    
    Draw_Test_Point(220,300,Yellow)                  ;
    for(;;)
    {
      if(Read_TP_Twice(&temp[6],&temp[7]))  break    ;       
      if(ReadKey()==Cancel)  return 0x00             ;
    }
    DrawRectFill(200,280,40,40,Color_BK)             ;
    Wait_Pen_Up()                                    ;
    if(TP_Adjust(temp))         break                ;
  }
  return 0x00                                        ;
}
コード例 #4
0
ファイル: touch.c プロジェクト: ganyao114/SwiftOS
//触摸屏初始化  		    
//返回值:0,没有进行校准
//       1,进行过校准	  
//触摸屏初始化  		    
//返回值:0,没有进行校准
//       1,进行过校准
u8 TP_Init(void)
{			    		   
	//注意,时钟使能之后,对GPIO的操作才有效
	//所以上拉之前,必须使能时钟.才能实现真正的上拉输出
	
 	GPIO_InitTypeDef  GPIO_InitStructure;
 	
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF, ENABLE);	 //使能PB,PF端口时钟

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;				 // PB1,PB2端口配置
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 	GPIO_Init(GPIOB, &GPIO_InitStructure);
 	GPIO_SetBits(GPIOB,GPIO_Pin_1|GPIO_Pin_2);//上拉


  	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;				 // PF9端口配置	推挽输出
 	GPIO_Init(GPIOF, &GPIO_InitStructure);
    GPIO_SetBits(GPIOF,GPIO_Pin_9);//P9 上拉

 	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_10;	// PF8.PF10端口配置
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 		 //	上拉输入
 	GPIO_Init(GPIOF, &GPIO_InitStructure);

  	TP_Read_XY(&tp_dev.x,&tp_dev.y);//第一次读取初始化	 
 	AT24CXX_Init();//初始化24CXX
	if(TP_Get_Adjdata())return 0;//已经校准
	else			   //未校准?
	{ 										    
		LCD_Clear(WHITE);//清屏
	    TP_Adjust();  //屏幕校准 
		TP_Save_Adjdata();	 
	}			
	TP_Get_Adjdata();	
	return 1; 									 
}