본문 바로가기

공부/STM32F4

11.[STM32F429] 터치 스크린 STMPE811QTR

반응형

http://naver.me/5HNCroV6

 

네이버 클라우드

소중한 폰 사진을 안전하게 보관하고, 함께보기로 가족, 친구들과 손쉽게 공유해 보세요!

cloud.naver.com

파일 자체를 전체적으로 공유하기에는 티스토리에서 제공하는 용량이 10mb 밖에 안되서 그동안 전체적인거 보단 main.c 나 바뀐 부분만 공유했지만...

터치스크린 코드는 너무 많이 고쳤어요....

 

기존에 제공하는 예제파일과 다른 부분을 적어놓겠습니다.

 

1. divers 파일를 프로젝트 파일 안으로 이동

2. font 파일을 코드상으로 적어놓지 않고 프로젝트에 넣고 fonts.h 파일로 로딩시킴

3. stm32f429i_discovery_lcd.c 에서 void integer_str_conv(uint8_t* str,uint32_t num_val) 함수 추가시킴

   - 정수값을 받아서 문자열로 바꿔주는 함수

int main(void)
{
  /* USER CODE BEGIN 1 */
  uint32_t test_val=0;
  uint8_t str_val[10] = {0,};
  uint8_t* str_val_addr = str_val;
  

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_LTDC_Init();
  MX_SPI5_Init();
  MX_DMA2D_Init();
  MX_FMC_Init();
  MX_I2C3_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
  BSP_LCD_Init();
  BSP_LCD_LayerDefaultInit(LCD_BACKGROUND_LAYER, LCD_FRAME_BUFFER);
  BSP_LCD_SelectLayer(LCD_BACKGROUND_LAYER);
  BSP_LCD_DisplayOn();
  BSP_LCD_Clear(LCD_COLOR_WHITE);
  
  printf("test1\r\n");
  Touchscreen_Calibration();
  
  BSP_LCD_Clear(LCD_COLOR_BLUE);  
  //TEST_page();
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
    BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
    GetPosition();
    //HAL_Delay(500);
  }
  /* USER CODE END 3 */
}
static void GetPosition(void)
{
    uint8_t P_str_val[10] = {0,};
    uint8_t* P_str_val_addr = P_str_val;
    static uint32_t x = 0, y = 0;
    static TS_StateTypeDef  TS_State;  
    
    BSP_TS_GetState(&TS_State); 
    
    x = Calibration_GetX(TS_State.X);
    y = Calibration_GetX(TS_State.Y);
    
    if ((TS_State.TouchDetected)){
      BSP_LCD_ClearStringLine(2);
      BSP_LCD_ClearStringLine(3);
      integer_str_conv(P_str_val_addr,x);
      BSP_LCD_DisplayStringAtLine(2,P_str_val_addr);
    
      integer_str_conv(P_str_val_addr,y);
      BSP_LCD_DisplayStringAtLine(3,P_str_val_addr);
      
      //printf("X=%d\r\n",x);
      //printf("Y=%d\r\n",y);  
    }
}

결과 화면

 

 

저는 ST에서 제공하는 드라이버를 쓰는 예제를 만든 경우입니다.

그래서 동작 원리 이런건 설명하지 않겠습니다.

동작원리나 드라이버를 사용하지 않는 분 께서는 아래 쪽 링크 블로그를 들어가시면 될거 같습니다.

 

https://m.blog.naver.com/PostView.nhn?blogId=specialist0&logNo=220752953385&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F

 

STM32F429I-DISCO 보드의 터치스크린 구동 (STMPE811)

이전 글에서 STM32F429I-DISCO 보드의 TFT-LCD를 초기화하고 문자를 출력했는데요. 이번에...

blog.naver.com

 

반응형

'공부 > STM32F4' 카테고리의 다른 글

13.[STM32F429] eeprom  (0) 2019.07.17
12.[STM32F429] Usart1  (0) 2019.07.16
10.[STM32F429] LCD  (0) 2019.07.10
9.[STM32F429] LTDC 용어 정리  (0) 2019.07.02
[TrueSTUDIO]Could not find symbol  (0) 2019.04.23