/**
******************************************************************************
* @file stm322xg_eval_lcd.c
* @author MCD Application Team
* @version V4.6.1
* @date 18-April-2011
* @brief This file includes the LCD driver for AM-240320L8TNQW00H (LCD_ILI9320)
* and AM240320D5TOQW01H (LCD_ILI9325) Liquid Crystal Display Modules
* of STM322xG-EVAL evaluation board(MB786) RevA and RevB.
******************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*
* <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "stm322xg_eval_lcd.h"
#include "../Common/fonts.c"
/** @addtogroup Utilities
* @{
*/
/** @addtogroup STM32_EVAL
* @{
*/
/** @addtogroup STM322xG_EVAL
* @{
*/
/** @defgroup STM322xG_EVAL_LCD
* @brief This file includes the LCD driver for AM-240320L8TNQW00H (LCD_ILI9320)
* and AM240320D5TOQW01H (LCD_ILI9325) Liquid Crystal Display Modules
* of STM322xG_EVAL board.
* @{
*/
/** @defgroup STM322xG_EVAL_LCD_Private_TypesDefinitions
* @{
*/
typedef struct
{
__IO uint16_t LCD_REG;
__IO uint16_t LCD_RAM;
} LCD_TypeDef;
/**
* @}
*/
/** @defgroup STM322xG_EVAL_LCD_Private_Defines
* @{
*/
/* Note: LCD /CS is NE3 - Bank 3 of NOR/SRAM Bank 1~4 */
#define LCD_BASE ((uint32_t)(0x60000000 | 0x08000000))
#define LCD ((LCD_TypeDef *) LCD_BASE)
#define MAX_POLY_CORNERS 200
#define POLY_Y(Z) ((int32_t)((Points + Z)->X))
#define POLY_X(Z) ((int32_t)((Points + Z)->Y))
/**
* @}
*/
/** @defgroup STM322xG_EVAL_LCD_Private_Macros
* @{
*/
#define ABS(X) ((X) > 0 ? (X) : -(X))
/**
* @}
*/
/** @defgroup STM322xG_EVAL_LCD_Private_Variables
* @{
*/
static sFONT *LCD_Currentfonts;
/* Global variables to set the written text color */
static __IO uint16_t TextColor = 0x0000, BackColor = 0xFFFF;
/**
* @}
*/
/** @defgroup STM322xG_EVAL_LCD_Private_FunctionPrototypes
* @{
*/
#ifndef USE_Delay
static void delay(__IO uint32_t nCount);
#endif /* USE_Delay*/
static void PutPixel(int16_t x, int16_t y);
static void LCD_PolyLineRelativeClosed(pPoint Points, uint16_t PointCount, uint16_t Closed);
/**
* @}
*/
/** @defgroup STM322xG_EVAL_LCD_Private_Functions
* @{
*/
/**
* @brief DeInitializes the LCD.
* @param None
* @retval None
*/
void LCD_DeInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*!< LCD Display Off */
LCD_DisplayOff();
/* BANK 3 (of NOR/SRAM Bank 1~4) is disabled */
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);
/*!< LCD_SPI DeInit */
FSMC_NORSRAMDeInit(FSMC_Bank1_NORSRAM3);
/*-- GPIO Configuration ------------------------------------------------------*/
/* SRAM Data lines configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource0, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource1, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource8, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource9, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource10, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_MCO);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource7 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource8 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource9 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource10 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource11 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource12 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource13 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource14 , GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE, GPIO_PinSource15 , GPIO_AF_MCO);
/* SRAM Address lines configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPIO_Pin_13 |
GPIO_Pin_14 | GPIO_Pin_15;
GPIO_Init(GPIOF, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource0, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource1, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource2, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource3, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource4, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource5, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource12, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource13, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource14, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOF,GPIO_PinSource15, GPIO_AF_MCO);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |
GPIO_Pin_4 | GPIO_Pin_5;
GPIO_Init(GPIOG, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource0, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource1, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource2, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource3, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource4, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOG,GPIO_PinSource5, GPIO_AF_MCO);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource11, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource12, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource13, GPIO_AF_MCO);
/* NOE and NWE configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 |GPIO_Pin_5;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource4, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOD,GPIO_PinSource5, GPIO_AF_MCO);
/* NE3 configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_Init(GPIOG, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOG, GPIO_PinSource12, GPIO_AF_MCO);
/* NBL0, NBL1 configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_Init(GPIOE, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource0, GPIO_AF_MCO);
GPIO_PinAFConfig(GPIOE,GPIO_PinSource1, GPIO_AF_MCO);
}
/**
* @brief Initializes the LCD.
* @param None
* @retval None
*/
void STM322xG_LCD_Init(void)
{
__IO uint32_t lcdid = 0;
/* Configure the LCD Control pins --------------------------------------------*/
LCD_CtrlLinesConfig();
/* Configure the FSMC Parallel interface -------------------------------------*/
LCD_FSMCConfig();
_delay_(5); /* delay 50 ms */
/* Read the LCD ID */
lcdid = LCD_ReadReg(0x00);
/* Check
评论0