
/******************************************************************************
*@file  : app.h
*@brief : application
******************************************************************************/

#ifndef __APP_H
#define __APP_H

#include "hal.h"
#include "fonts.h"


/* 定义 LCD 驱动芯片 ID */
#define LCDID_UNKNOWN                       0x0000
#define LCDID_ILI9341                       0x9341
#define LCDID_ST7789V                       0x8552

#define LINE(x)                             ((x) * (((FONT_SelectTypeDef *)LCD_GetFont())->Height))
#define LINEY(x)                            ((x) * (((FONT_SelectTypeDef *)LCD_GetFont())->Width))

 /******************************* ILI9341 显示屏的 EXMC 参数定义 ***************************/
//EXMC_Bank3_NORSRAM用于LCD命令操作的地址
#define      EXMC_Addr_ILI9341_CMD          ((uint32_t) 0x68000000)

//EXMC_Bank3_NORSRAM用于LCD数据操作的地址      
#define      EXMC_Addr_ILI9341_DATA         ((uint32_t) 0x68000002)

//复位引脚 A2地址=PC1
#define      ILI9341_RST_PORT               GPIOC
#define      ILI9341_RST_PIN                GPIO_PIN_1

//背光引脚 A4地址=PC3
#define      ILI9341_BK_PORT                GPIOC
#define      ILI9341_BK_PIN                 GPIO_PIN_3

/*A地址信号线*/    
#define EXMC_A0_GPIO_PORT                   GPIOB
#define EXMC_A0_GPIO_PIN                    GPIO_PIN_15

/*D 数据信号线*/
#define EXMC_D0_GPIO_PORT                   GPIOD
#define EXMC_D0_GPIO_PIN                    GPIO_PIN_14

#define EXMC_D1_GPIO_PORT                   GPIOD
#define EXMC_D1_GPIO_PIN                    GPIO_PIN_15

#define EXMC_D2_GPIO_PORT                   GPIOD
#define EXMC_D2_GPIO_PIN                    GPIO_PIN_0

#define EXMC_D3_GPIO_PORT                   GPIOD
#define EXMC_D3_GPIO_PIN                    GPIO_PIN_1

#define EXMC_D4_GPIO_PORT                   GPIOE
#define EXMC_D4_GPIO_PIN                    GPIO_PIN_7

#define EXMC_D5_GPIO_PORT                   GPIOE
#define EXMC_D5_GPIO_PIN                    GPIO_PIN_8

#define EXMC_D6_GPIO_PORT                   GPIOE
#define EXMC_D6_GPIO_PIN                    GPIO_PIN_9

#define EXMC_D7_GPIO_PORT                   GPIOE
#define EXMC_D7_GPIO_PIN                    GPIO_PIN_10

#define EXMC_D8_GPIO_PORT                   GPIOE
#define EXMC_D8_GPIO_PIN                    GPIO_PIN_11

#define EXMC_D9_GPIO_PORT                   GPIOE
#define EXMC_D9_GPIO_PIN                    GPIO_PIN_12

#define EXMC_D10_GPIO_PORT                  GPIOE
#define EXMC_D10_GPIO_PIN                   GPIO_PIN_13

#define EXMC_D11_GPIO_PORT                  GPIOE
#define EXMC_D11_GPIO_PIN                   GPIO_PIN_14

#define EXMC_D12_GPIO_PORT                  GPIOE
#define EXMC_D12_GPIO_PIN                   GPIO_PIN_15

#define EXMC_D13_GPIO_PORT                  GPIOD
#define EXMC_D13_GPIO_PIN                   GPIO_PIN_8

#define EXMC_D14_GPIO_PORT                  GPIOD
#define EXMC_D14_GPIO_PIN                   GPIO_PIN_9

#define EXMC_D15_GPIO_PORT                  GPIOD
#define EXMC_D15_GPIO_PIN                   GPIO_PIN_10


/*控制信号线*/  
/*CS片选*/
/*NE3 ,对应的基地址0x68000000*/
#define EXMC_LCD_GPIO_PORT                  GPIOB
#define EXMC_LCD_GPIO_PIN                   GPIO_PIN_2

/*WE写使能*/
#define EXMC_WE_GPIO_PORT                   GPIOD
#define EXMC_WE_GPIO_PIN                    GPIO_PIN_5

/*OE读使能*/
#define EXMC_OE_GPIO_PORT                   GPIOD
#define EXMC_OE_GPIO_PIN                    GPIO_PIN_4

/*UB数据掩码*/
#define EXMC_UDQM_GPIO_PORT                 GPIOE
#define EXMC_UDQM_GPIO_PIN                  GPIO_PIN_1

/*LB数据掩码*/
#define EXMC_LDQM_GPIO_PORT                 GPIOE
#define EXMC_LDQM_GPIO_PIN                  GPIO_PIN_0

/*NADV*/
#define EXMC_NADV_GPIO_PORT                 GPIOB
#define EXMC_NADV_GPIO_PIN                  GPIO_PIN_7

/*EXMC_CLK*/
#define EXMC_CLK_GPIO_PORT                  GPIOD
#define EXMC_CLK_GPIO_PIN                   GPIO_PIN_3

/*EXMC_NWATI*/
#define EXMC_NWATI_GPIO_PORT                GPIOD
#define EXMC_NWATI_GPIO_PIN                 GPIO_PIN_6



/*************************************** 调试预用 ******************************************/
#define      DEBUG_DELAY()    

/***************************** ILI934 显示区域的起始坐标和总行列数 ***************************/
#define ILI9341_DispWindow_X_Star           0       //起始点的X坐标
#define ILI9341_DispWindow_Y_Star           0       //起始点的Y坐标

#define ILI9341_LESS_PIXEL                  240     //液晶屏较短方向的像素宽度
#define ILI9341_MORE_PIXEL                  320     //液晶屏较长方向的像素宽度

//根据液晶扫描方向而变化的XY像素宽度
//调用ILI9341_GramScan函数设置方向时会自动更改
extern uint16_t glcdXLength,glcdYLength; 

//液晶屏扫描模式
//参数可选值为0-7
extern uint8_t glcdScanMode;

/******************************* 定义 ILI934 显示屏常用颜色 ********************************/
#define BACKGROUND                          BLACK       //默认背景颜色
#define WHITE                               0xFFFF      //白色
#define BLACK                               0x0000      //黑色 
#define GREY                                0xF7DE      //灰色 
#define BLUE                                0x001F      //蓝色 
#define BLUE2                               0x051F      //浅蓝色 
#define RED                                 0xF800      //红色 
#define MAGENTA                             0xF81F      //红紫色，洋红色 
#define GREEN                               0x07E0      //绿色 
#define CYAN                                0x7FFF      //蓝绿色，青色 
#define YELLOW                              0xFFE0      //黄色 
#define BRED                                0xF81F      //红蓝色
#define GRED                                0xFFE0      //红绿色
#define GBLUE                               0x07FF      //蓝绿色



/******************************* 定义 ILI934 常用命令 ********************************/
#define CMD_SetCoordinateX                  0x2A        //设置X坐标
#define CMD_SetCoordinateY                  0x2B        //设置Y坐标
#define CMD_SetPixel                        0x2C        //填充像素


void APP_LCD8080_Test(void);


#endif /* __APP_H */







