ref: c60c0cbb4919e1bef859ba53580f42189fa0e455
dir: /demos/stm32f429_disco/stm/stm32f429/stm32f429i_discovery_lcd.h/
/**
******************************************************************************
* @file stm32f429i_discovery_lcd.h
* @author MCD Application Team
* @version V1.0.1
* @date 28-October-2013
* @brief This file contains all the functions prototypes for the
* stm32f429i_discovery_lcd.c driver.
******************************************************************************
* @attention
*
* <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2>
*
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.st.com/software_license_agreement_liberty_v2
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM32F429I_DISCOVERY_LCD_H
#define __STM32F429I_DISCOVERY_LCD_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32f429i_discovery.h"
#include "stm32f429i_discovery_sdram.h"
#include "fonts.h"
/** @addtogroup Utilities
* @{
*/
/** @addtogroup STM32F4_DISCOVERY
* @{
*/
/** @addtogroup STM32F429I_DISCOVERY
* @{
*/
/** @addtogroup STM32F429I_DISCOVERY_LCD
* @{
*/
/** @defgroup STM32F429I_DISCOVERY_LCD_Exported_Types
* @{
*/
typedef struct
{
int16_t X;
int16_t Y;
} Point, * pPoint;
/**
* @}
*/
/** @defgroup stm32f429i_discovery_LCD_Exported_Constants
* @{
*/
/* LCD Size (Width and Height) */
#define LCD_PIXEL_WIDTH ((uint16_t)240)
#define LCD_PIXEL_HEIGHT ((uint16_t)320)
#define LCD_FRAME_BUFFER ((uint32_t)0xD0000000)
#define BUFFER_OFFSET ((uint32_t)0x50000)
/**
* @brief Uncomment the line below if you want to use user defined Delay function
* (for precise timing), otherwise default _delay_ function defined within
* this driver is used (less precise timing).
*/
/* #define USE_Delay */
#ifdef USE_Delay
#include "main.h"
#define _delay_ Delay /* !< User can provide more timing precise _delay_ function
(with 10ms time base), using SysTick for example */
#else
#define _delay_ delay /* !< Default _delay_ function with less precise timing */
#endif
/**
* @brief LCD Control pin
*/
#define LCD_NCS_PIN GPIO_Pin_2
#define LCD_NCS_GPIO_PORT GPIOC
#define LCD_NCS_GPIO_CLK RCC_AHB1Periph_GPIOC
/**
* @brief LCD Command/data pin
*/
#define LCD_WRX_PIN GPIO_Pin_13
#define LCD_WRX_GPIO_PORT GPIOD
#define LCD_WRX_GPIO_CLK RCC_AHB1Periph_GPIOD
/**
* @brief LCD SPI Interface pins
*/
#define LCD_SPI_SCK_PIN GPIO_Pin_7 /* PF.07 */
#define LCD_SPI_SCK_GPIO_PORT GPIOF /* GPIOF */
#define LCD_SPI_SCK_GPIO_CLK RCC_AHB1Periph_GPIOF
#define LCD_SPI_SCK_SOURCE GPIO_PinSource7
#define LCD_SPI_SCK_AF GPIO_AF_SPI5
#define LCD_SPI_MISO_PIN GPIO_Pin_8 /* PF.08 */
#define LCD_SPI_MISO_GPIO_PORT GPIOF /* GPIOF */
#define LCD_SPI_MISO_GPIO_CLK RCC_AHB1Periph_GPIOF
#define LCD_SPI_MISO_SOURCE GPIO_PinSource8
#define LCD_SPI_MISO_AF GPIO_AF_SPI5
#define LCD_SPI_MOSI_PIN GPIO_Pin_9 /* PF.09 */
#define LCD_SPI_MOSI_GPIO_PORT GPIOF /* GPIOF */
#define LCD_SPI_MOSI_GPIO_CLK RCC_AHB1Periph_GPIOF
#define LCD_SPI_MOSI_SOURCE GPIO_PinSource9
#define LCD_SPI_MOSI_AF GPIO_AF_SPI5
#define LCD_SPI SPI5
#define LCD_SPI_CLK RCC_APB2Periph_SPI5
/**
* @brief LCD Registers
*/
#define LCD_SLEEP_OUT 0x11 /* Sleep out register */
#define LCD_GAMMA 0x26 /* Gamma register */
#define LCD_DISPLAY_OFF 0x28 /* Display off register */
#define LCD_DISPLAY_ON 0x29 /* Display on register */
#define LCD_COLUMN_ADDR 0x2A /* Colomn address register */
#define LCD_PAGE_ADDR 0x2B /* Page address register */
#define LCD_GRAM 0x2C /* GRAM register */
#define LCD_MAC 0x36 /* Memory Access Control register*/
#define LCD_PIXEL_FORMAT 0x3A /* Pixel Format register */
#define LCD_WDB 0x51 /* Write Brightness Display register */
#define LCD_WCD 0x53 /* Write Control Display register*/
#define LCD_RGB_INTERFACE 0xB0 /* RGB Interface Signal Control */
#define LCD_FRC 0xB1 /* Frame Rate Control register */
#define LCD_BPC 0xB5 /* Blanking Porch Control register*/
#define LCD_DFC 0xB6 /* Display Function Control register*/
#define LCD_POWER1 0xC0 /* Power Control 1 register */
#define LCD_POWER2 0xC1 /* Power Control 2 register */
#define LCD_VCOM1 0xC5 /* VCOM Control 1 register */
#define LCD_VCOM2 0xC7 /* VCOM Control 2 register */
#define LCD_POWERA 0xCB /* Power control A register */
#define LCD_POWERB 0xCF /* Power control B register */
#define LCD_PGAMMA 0xE0 /* Positive Gamma Correction register*/
#define LCD_NGAMMA 0xE1 /* Negative Gamma Correction register*/
#define LCD_DTCA 0xE8 /* Driver timing control A */
#define LCD_DTCB 0xEA /* Driver timing control B */
#define LCD_POWER_SEQ 0xED /* Power on sequence register */
#define LCD_3GAMMA_EN 0xF2 /* 3 Gamma enable register */
#define LCD_INTERFACE 0xF6 /* Interface control register */
#define LCD_PRC 0xF7 /* Pump ratio control register */
/**
* @brief LCD color
*/
#define LCD_COLOR_WHITE 0xFFFF
#define LCD_COLOR_BLACK 0x0000
#define LCD_COLOR_GREY 0xF7DE
#define LCD_COLOR_BLUE 0x001F
#define LCD_COLOR_BLUE2 0x051F
#define LCD_COLOR_RED 0xF800
#define LCD_COLOR_MAGENTA 0xF81F
#define LCD_COLOR_GREEN 0x07E0
#define LCD_COLOR_CYAN 0x7FFF
#define LCD_COLOR_YELLOW 0xFFE0
/**
* @brief LCD Lines depending on the chosen fonts.
*/
#define LCD_LINE_0 LINE(0)
#define LCD_LINE_1 LINE(1)
#define LCD_LINE_2 LINE(2)
#define LCD_LINE_3 LINE(3)
#define LCD_LINE_4 LINE(4)
#define LCD_LINE_5 LINE(5)
#define LCD_LINE_6 LINE(6)
#define LCD_LINE_7 LINE(7)
#define LCD_LINE_8 LINE(8)
#define LCD_LINE_9 LINE(9)
#define LCD_LINE_10 LINE(10)
#define LCD_LINE_11 LINE(11)
#define LCD_LINE_12 LINE(12)
#define LCD_LINE_13 LINE(13)
#define LCD_LINE_14 LINE(14)
#define LCD_LINE_15 LINE(15)
#define LCD_LINE_16 LINE(16)
#define LCD_LINE_17 LINE(17)
#define LCD_LINE_18 LINE(18)
#define LCD_LINE_19 LINE(19)
#define LCD_LINE_20 LINE(20)
#define LCD_LINE_21 LINE(21)
#define LCD_LINE_22 LINE(22)
#define LCD_LINE_23 LINE(23)
#define LCD_LINE_24 LINE(24)
#define LCD_LINE_25 LINE(25)
#define LCD_LINE_26 LINE(26)
#define LCD_LINE_27 LINE(27)
#define LCD_LINE_28 LINE(28)
#define LCD_LINE_29 LINE(29)
#define LCD_LINE_30 LINE(30)
#define LCD_LINE_31 LINE(31)
#define LCD_LINE_32 LINE(32)
#define LCD_LINE_33 LINE(33)
#define LCD_LINE_34 LINE(34)
#define LCD_LINE_35 LINE(35)
#define LCD_LINE_36 LINE(36)
#define LCD_LINE_37 LINE(37)
#define LCD_LINE_38 LINE(38)
#define LCD_LINE_39 LINE(39)
/**
* @brief LCD default font
*/
#define LCD_DEFAULT_FONT Font16x24
/**
* @brief LCD Direction
*/
#define LCD_DIR_HORIZONTAL 0x0000
#define LCD_DIR_VERTICAL 0x0001
/**
* @}
*/
/**
* @brief LCD Layer
*/
#define LCD_BACKGROUND_LAYER 0x0000
#define LCD_FOREGROUND_LAYER 0x0001
/**
* @}
*/
/** @defgroup STM32F429I_DISCOVERY_LCD_Exported_Macros
* @{
*/
#define ASSEMBLE_RGB(R, G, B) ((((R)& 0xF8) << 8) | (((G) & 0xFC) << 3) | (((B) & 0xF8) >> 3))
/**
* @}
*/
/** @defgroup STM32F429I_DISCOVERY_LCD_Exported_Functions
* @{
*/
void LCD_DeInit(void);
void LCD_Init(void);
void LCD_LayerInit(void);
void LCD_ChipSelect(FunctionalState NewState);
void LCD_SetLayer(uint32_t Layerx);
void LCD_SetColors(uint16_t _TextColor, uint16_t _BackColor);
void LCD_GetColors(uint16_t *_TextColor, uint16_t *_BackColor);
void LCD_SetTextColor(uint16_t Color);
void LCD_SetBackColor(uint16_t Color);
void LCD_SetTransparency(uint8_t transparency);
void LCD_ClearLine(uint16_t Line);
void LCD_Clear(uint16_t Color);
uint32_t LCD_SetCursor(uint16_t Xpos, uint16_t Ypos);
void LCD_SetColorKeying(uint32_t RGBValue);
void LCD_ReSetColorKeying(void);
void LCD_DrawChar(uint16_t Xpos, uint16_t Ypos, const uint16_t *c);
void LCD_DisplayChar(uint16_t Line, uint16_t Column, uint8_t Ascii);
void LCD_SetFont(sFONT *fonts);
sFONT * LCD_GetFont(void);
void LCD_DisplayStringLine(uint16_t Line, uint8_t *ptr);
void LCD_SetDisplayWindow(uint16_t Xpos, uint16_t Ypos, uint16_t Height, uint16_t Width);
void LCD_WindowModeDisable(void);
void LCD_DrawLine(uint16_t Xpos, uint16_t Ypos, uint16_t Length, uint8_t Direction);
void LCD_DrawRect(uint16_t Xpos, uint16_t Ypos, uint16_t Height, uint16_t Width);
void LCD_DrawCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
void LCD_DrawEllipse(int Xpos, int Ypos, int Radius, int Radius2);
void LCD_DrawFullEllipse(int Xpos, int Ypos, int Radius, int Radius2);
void LCD_DrawMonoPict(const uint32_t *Pict);
void LCD_WriteBMP(uint32_t BmpAddress);
void LCD_DrawUniLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
void LCD_DrawFullRect(uint16_t Xpos, uint16_t Ypos, uint16_t Width, uint16_t Height);
void LCD_DrawFullCircle(uint16_t Xpos, uint16_t Ypos, uint16_t Radius);
void LCD_PolyLine(pPoint Points, uint16_t PointCount);
void LCD_PolyLineRelative(pPoint Points, uint16_t PointCount);
void LCD_ClosedPolyLine(pPoint Points, uint16_t PointCount);
void LCD_ClosedPolyLineRelative(pPoint Points, uint16_t PointCount);
void LCD_FillPolyLine(pPoint Points, uint16_t PointCount);
void LCD_Triangle(pPoint Points, uint16_t PointCount);
void LCD_FillTriangle(uint16_t x1, uint16_t x2, uint16_t x3, uint16_t y1, uint16_t y2, uint16_t y3);
void LCD_WriteCommand(uint8_t LCD_Reg);
void LCD_WriteData(uint8_t value);
void LCD_PowerOn(void);
void LCD_DisplayOn(void);
void LCD_DisplayOff(void);
void LCD_CtrlLinesConfig(void);
void LCD_CtrlLinesWrite(GPIO_TypeDef* GPIOx, uint16_t CtrlPins, BitAction BitVal);
void LCD_SPIConfig(void);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __STM32F429I_DISCOVERY_LCD_H */
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/