New UI merged

This commit is contained in:
Bertrand Songis
2019-08-28 20:50:14 +02:00
parent 1f41076b0e
commit f4f8893ae9
806 changed files with 30836 additions and 11704 deletions
+51 -59
View File
@@ -35,11 +35,21 @@
uint8_t LCD_FIRST_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
uint8_t LCD_SECOND_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
uint8_t LCD_BACKUP_FRAME_BUFFER[DISPLAY_BUFFER_SIZE * sizeof(display_t)] __SDRAM;
uint8_t currentLayer = LCD_FIRST_LAYER;
uint32_t CurrentLayer = LCD_FIRST_LAYER;
BitmapBuffer lcdBuffer1(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_FIRST_FRAME_BUFFER);
BitmapBuffer lcdBuffer2(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_SECOND_FRAME_BUFFER);
BitmapBuffer * lcd = &lcdBuffer1;
#define NRST_LOW() do { LCD_GPIO_NRST->BSRRH = LCD_GPIO_PIN_NRST; } while(0)
#define NRST_HIGH() do { LCD_GPIO_NRST->BSRRL = LCD_GPIO_PIN_NRST; } while(0)
inline void LCD_NRST_LOW()
{
LCD_GPIO_NRST->BSRRH = LCD_GPIO_PIN_NRST;
}
inline void LCD_NRST_HIGH()
{
LCD_GPIO_NRST->BSRRL = LCD_GPIO_PIN_NRST;
}
static void LCD_AF_GPIOConfig(void)
{
@@ -125,31 +135,21 @@ static void LCD_NRSTConfig(void)
GPIO_Init(LCD_GPIO_NRST, &GPIO_InitStructure);
}
// TODO delay function
static void delay3(uint32_t nCount)
static void lcdReset()
{
uint32_t index = 0;
for(index = (1000 * 100 * nCount); index != 0; --index)
{
__asm("nop\n");
}
LCD_NRST_HIGH();
delay_ms(1);
LCD_NRST_LOW(); // RESET;
delay_ms(20);
LCD_NRST_HIGH();
delay_ms(20);
}
static void lcd_reset(void)
void LCD_Init_LTDC()
{
NRST_HIGH();
delay3(1);
NRST_LOW(); // RESET();
delay3(20);
NRST_HIGH();
delay3(30);
}
void LCD_Init_LTDC(void)
{
LTDC_InitTypeDef LTDC_InitStruct;
LTDC_InitTypeDef LTDC_InitStruct;
/* Configure PLLSAI prescalers for LCD */
/* PLLSAI_VCO Input = HSE_VALUE/PLL_M = 1 Mhz */
@@ -159,7 +159,7 @@ void LCD_Init_LTDC(void)
//second pam is for audio
//third pam is for LCD
RCC_PLLSAIConfig(192, 6, 3);
RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4); //Modify by Fy
RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
/* Enable PLLSAI Clock */
RCC_PLLSAICmd(ENABLE);
@@ -224,11 +224,6 @@ void LCD_Init_LTDC(void)
#endif
}
/**
* @brief Initializes the LCD Layers.
* @param None
* @retval None
*/
void LCD_LayerInit()
{
LTDC_Layer_InitTypeDef LTDC_Layer_InitStruct;
@@ -300,17 +295,11 @@ void LCD_LayerInit()
LTDC_DitherCmd(ENABLE);
}
/*********************************output****************************************/
/**
* @brief Initializes the LCD.
* @param None
* @retval None
*/
void LCD_Init(void)
{
/* Reset the LCD --------------------------------------------------------*/
LCD_NRSTConfig();
lcd_reset();
lcdReset();
/* Configure the LCD Control pins */
LCD_AF_GPIOConfig();
@@ -318,25 +307,15 @@ void LCD_Init(void)
LCD_Init_LTDC();
}
BitmapBuffer lcdBuffer1(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_FIRST_FRAME_BUFFER);
BitmapBuffer lcdBuffer2(BMP_RGB565, LCD_W, LCD_H, (uint16_t *)LCD_SECOND_FRAME_BUFFER);
BitmapBuffer * lcd = &lcdBuffer1;
/**
* @brief Sets the LCD Layer.
* @param Layerx: specifies the Layer foreground or background.
* @retval None
*/
void LCD_SetLayer(uint32_t Layerx)
void LCD_SetLayer(uint32_t layer)
{
if (Layerx == LCD_FIRST_LAYER) {
if (layer == LCD_FIRST_LAYER) {
lcd = &lcdBuffer1;
CurrentLayer = LCD_FIRST_LAYER;
}
else {
lcd = &lcdBuffer2;
CurrentLayer = LCD_SECOND_LAYER;
}
currentLayer = layer;
}
/**
@@ -347,7 +326,7 @@ void LCD_SetLayer(uint32_t Layerx)
*/
void LCD_SetTransparency(uint8_t transparency)
{
if (CurrentLayer == LCD_FIRST_LAYER) {
if (currentLayer == LCD_FIRST_LAYER) {
LTDC_LayerAlpha(LTDC_Layer1, transparency);
}
else {
@@ -356,7 +335,7 @@ void LCD_SetTransparency(uint8_t transparency)
LTDC_ReloadConfig(LTDC_IMReload);
}
void lcdInit(void)
void lcdInit()
{
/* Initialize the LCD */
LCD_Init();
@@ -527,7 +506,7 @@ void DMABitmapConvert(uint16_t * dest, const uint8_t * src, uint16_t w, uint16_t
while (DMA2D_GetFlagStatus(DMA2D_FLAG_TC) == RESET);
}
void DMAcopy(void * src, void * dest, int len)
void lcdCopy(void * dest, void * src)
{
DMA2D_DeInit();
@@ -562,21 +541,34 @@ void DMAcopy(void * src, void * dest, int len)
void lcdStoreBackupBuffer()
{
DMAcopy(lcd->getData(), LCD_BACKUP_FRAME_BUFFER, DISPLAY_BUFFER_SIZE * sizeof(display_t));
lcdCopy(LCD_BACKUP_FRAME_BUFFER, lcd->getData());
}
int lcdRestoreBackupBuffer()
{
DMAcopy(LCD_BACKUP_FRAME_BUFFER, lcd->getData(), DISPLAY_BUFFER_SIZE * sizeof(display_t));
lcdCopy(lcd->getData(), LCD_BACKUP_FRAME_BUFFER);
return 1;
}
void lcdRefresh()
{
LCD_SetTransparency(255);
if (CurrentLayer == LCD_FIRST_LAYER)
if (currentLayer == LCD_FIRST_LAYER) {
LTDC_LayerAlpha(LTDC_Layer1, 255);
LTDC_LayerAlpha(LTDC_Layer2, 0);
}
else {
LTDC_LayerAlpha(LTDC_Layer1, 0);
LTDC_LayerAlpha(LTDC_Layer2, 255);
}
LTDC_ReloadConfig(LTDC_IMReload);
}
void lcdNextLayer()
{
if (currentLayer == LCD_FIRST_LAYER) {
LCD_SetLayer(LCD_SECOND_LAYER);
else
}
else {
LCD_SetLayer(LCD_FIRST_LAYER);
LCD_SetTransparency(0);
}
}