예제 #1
0
void TEST_fillPrimitives(u16 step) {
    LCD_fillScreen(BLACK);

    u16 halfStep      = (u16) (step / 2),
        quartStep     = (u16) (halfStep / 2),
        halfQuartStep = (u16) (quartStep / 2);

    u16 w = LCD_getWidth(),
        h = LCD_getHeight();

    for (u16 x = 0; x < w; x += step) {
        LCD_drawFastVLine(x, 0, h, DGRAY);
    }

    for (u16 y = 0; y < h; y += step) {
        LCD_drawFastHLine(0, y, w, DGRAY);
    }

    for (u16 x = 0; x < w; x += step) {
        for (u16 y = 0; y < h; y += step) {
            LCD_drawRect(x, y, halfStep, halfStep, DGREEN);
            LCD_fillRect(x + halfStep, y + halfStep, halfStep, halfStep, GREENYELLOW);
            LCD_drawCircle(x + quartStep, y + quartStep, halfQuartStep, GREENYELLOW);
            LCD_fillCircle(x + halfStep + quartStep, y + halfStep + quartStep, halfQuartStep, DGREEN);
            LCD_putPixel(x + quartStep, y + quartStep, YELLOW);

            LCD_drawLine(x + halfStep, y + halfStep, x + step, y + step, WHITE);
        }
    }
}
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

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

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

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

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_FSMC_Init();
  MX_SPI1_Init();
  MX_USART1_UART_Init();

  /* USER CODE BEGIN 2 */
  LCD_Init(LCD_ORIENTATION_PORTRAIT);
  LCD_setFont(SmallFont);
  LCD_setBackColor(VGA_BLACK);
  LCD_fillScr(VGA_BLACK);

  TSC2046_Init();
  TSC2046_Calibration();
  LCD_fillScr(VGA_BLACK);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  char buf[100];
  int16_t xpos, ypos;

  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
    LCD_setColor(VGA_BLUE);
    LCD_drawRect(0, 0, 10, 10);

    while(!Is_Touhcing());

    while (Is_Touhcing())
    {
      // read
      xpos = TSC2046_Get_Position_X();
      ypos = TSC2046_Get_Position_Y();

      // clear
      if (xpos > LCD_WIDTH - 20 && ypos > LCD_HEIGHT - 20)
      {
        LCD_fillScr(VGA_BLACK);
      }

      // print
      sprintf(buf, "(x,y)=(%04d, %04d)", xpos, ypos);
      LCD_setColor(VGA_RED);
      LCD_setBackColor(VGA_BLACK);
      LCD_print(buf, 20, 300, 0);

      // draw pen
      LCD_setColor(rand() | 0b0111101111101111);
      LCD_fillCircle(xpos, ypos, 3);

      // clear button
      LCD_setColor(VGA_WHITE);
      LCD_fillRect(LCD_WIDTH - 20, LCD_HEIGHT - 20, LCD_WIDTH - 1, LCD_HEIGHT - 1);

      // pen indicator
      LCD_setColor(VGA_GREEN);
      LCD_drawRect(0, 0, 10, 10);
    }

  }
  /* USER CODE END 3 */

}