157 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			157 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C
		
	
	
	
| /**
 | |
|   ******************************************************************************
 | |
|   * @file    BSP/Src/joystick.c
 | |
|   * @author  MCD Application Team
 | |
|   * @brief   This example code shows how to use the joystick feature in the 
 | |
|   *          STM3210E_EVAL driver
 | |
|   ******************************************************************************
 | |
|   * @attention
 | |
|   *
 | |
|   * Copyright (c) 2016 STMicroelectronics.
 | |
|   * All rights reserved.
 | |
|   *
 | |
|   * This software is licensed under terms that can be found in the LICENSE file
 | |
|   * in the root directory of this software component.
 | |
|   * If no LICENSE file comes with this software, it is provided AS-IS.
 | |
|   *
 | |
|   ******************************************************************************
 | |
|   */
 | |
| 
 | |
| /* Includes ------------------------------------------------------------------*/
 | |
| #include "main.h"
 | |
| 
 | |
| /** @addtogroup STM32F1xx_HAL_Examples
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /** @addtogroup BSP
 | |
|   * @{
 | |
|   */
 | |
| 
 | |
| /* Private typedef -----------------------------------------------------------*/
 | |
| /* Private define ------------------------------------------------------------*/
 | |
| /* Private macro -------------------------------------------------------------*/
 | |
| /* Private variables ---------------------------------------------------------*/
 | |
| static JOYState_TypeDef JoyState = JOY_NONE;
 | |
| /* Private function prototypes -----------------------------------------------*/
 | |
| static void Joystick_SetHint(void);
 | |
| /* Private functions ---------------------------------------------------------*/
 | |
| 
 | |
| /**
 | |
|   * @brief  Joystick demo
 | |
|   * @param  None
 | |
|   * @retval None
 | |
|   */
 | |
| void Joystick_demo (void)
 | |
| { 
 | |
|   static uint16_t xPtr = 12;
 | |
|   static uint16_t yPtr = 92;
 | |
|   static uint16_t old_xPtr = 12;
 | |
|   static uint16_t old_yPtr = 92;  
 | |
| 
 | |
|   Joystick_SetHint();
 | |
|   
 | |
|   BSP_JOY_Init(JOY_MODE_GPIO);
 | |
|   
 | |
|   while (1)
 | |
|   {
 | |
|     /* Get the Joystick State */
 | |
|     JoyState = BSP_JOY_GetState();
 | |
|     
 | |
|     switch(JoyState)
 | |
|     {
 | |
|     case JOY_UP:
 | |
|       if(yPtr > 92)
 | |
|       {
 | |
|         yPtr--;
 | |
|       }
 | |
|       break;     
 | |
|     case JOY_DOWN:
 | |
|         if(yPtr < (BSP_LCD_GetYSize() - 12 - 11))
 | |
|       {
 | |
|         yPtr++;
 | |
|       }
 | |
|       break;          
 | |
|     case JOY_LEFT:
 | |
|       if(xPtr > 12)
 | |
|       {
 | |
|         xPtr--;
 | |
|       }
 | |
|       break;         
 | |
|     case JOY_RIGHT:
 | |
|         if(xPtr < (BSP_LCD_GetXSize() - 8 - 11))
 | |
|       {
 | |
|         xPtr++;
 | |
|       }
 | |
|       break;                 
 | |
|     default:
 | |
|       break;           
 | |
|     }
 | |
|     
 | |
|     BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
 | |
|     BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
 | |
|     
 | |
|     if(JoyState == JOY_SEL)
 | |
|     {
 | |
|       BSP_LCD_SetTextColor(LCD_COLOR_RED);
 | |
|       BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
 | |
|       
 | |
|     }
 | |
|     else if(JoyState == JOY_NONE)
 | |
|     {
 | |
|       BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
 | |
|       BSP_LCD_DisplayChar(xPtr, yPtr, 'X');   
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
 | |
|       BSP_LCD_DisplayChar(old_xPtr, old_yPtr, 'X');
 | |
|       BSP_LCD_SetTextColor(LCD_COLOR_BLUE); 
 | |
|       BSP_LCD_DisplayChar(xPtr, yPtr, 'X');
 | |
|       
 | |
|       old_xPtr = xPtr;
 | |
|       old_yPtr = yPtr;
 | |
|     }
 | |
|     if(CheckForUserInput() > 0)
 | |
|     {
 | |
|       return;
 | |
|     }
 | |
|     HAL_Delay(5);
 | |
|   }
 | |
| }
 | |
| 
 | |
| /**
 | |
|   * @brief  Display joystick demo hint
 | |
|   * @param  None
 | |
|   * @retval None
 | |
|   */
 | |
| static void Joystick_SetHint(void)
 | |
| {
 | |
|   /* Clear the LCD */ 
 | |
|   BSP_LCD_Clear(LCD_COLOR_WHITE);
 | |
|   
 | |
|   /* Set Joystick Demo description */
 | |
|   BSP_LCD_SetTextColor(LCD_COLOR_BLUE);
 | |
|   BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
 | |
|   BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
 | |
|   BSP_LCD_SetBackColor(LCD_COLOR_BLUE); 
 | |
|   BSP_LCD_SetFont(&Font24);
 | |
|   BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"Joystick", CENTER_MODE);
 | |
|   BSP_LCD_SetFont(&Font12);
 | |
|   BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"Please use the joystick to move the pointer", CENTER_MODE);
 | |
|   BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"inside the rectangle, to switch to next menu", CENTER_MODE);
 | |
|   BSP_LCD_DisplayStringAt(0, 60, (uint8_t *)"press Key push-button.", CENTER_MODE);
 | |
|   
 | |
|   /* Set the LCD Text Color */
 | |
|   BSP_LCD_SetTextColor(LCD_COLOR_BLUE);  
 | |
|   BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
 | |
|   BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
 | |
| }
 | |
| /**
 | |
|   * @}
 | |
|   */ 
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   */ 
 |