119 TS_StateTypeDef TS_State;
156 printf(
" __ __ ____ ___\n");
157 printf(
"| \\/ | | _ \\__ \\\n");
158 printf(
"| \\ / |_ __| |_) | ) |\n");
159 printf(
"| |\\/| | |__| _ < / /\n");
160 printf(
"| | | | | | |_) / /_\n");
161 printf(
"|_| |_|_| |____/____|\n");
165 printf(
"Init complete: Ready to roll!\n");
167 uint16_t usButtonId = 0;
188 printf(
"Button: %d \n",usButtonId);
210 printf(
"Error button doesn't exist");
227 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
228 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
232 HAL_PWR_EnableBkUpAccess();
236 __HAL_RCC_PWR_CLK_ENABLE();
237 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
242 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
243 RCC_OscInitStruct.HSEState = RCC_HSE_ON;
244 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
245 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
246 RCC_OscInitStruct.PLL.PLLM = 25;
247 RCC_OscInitStruct.PLL.PLLN = 400;
248 RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
249 RCC_OscInitStruct.PLL.PLLQ = 2;
250 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
257 if (HAL_PWREx_EnableOverDrive() != HAL_OK)
264 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
265 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
266 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
267 RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
268 RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
269 RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
271 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_6) != HAL_OK)
326 LTDC_LayerCfgTypeDef pLayerCfg = {0};
327 LTDC_LayerCfgTypeDef pLayerCfg1 = {0};
332 hltdc.Instance = LTDC;
333 hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL;
334 hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL;
335 hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL;
336 hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
337 hltdc.Init.HorizontalSync = 40;
338 hltdc.Init.VerticalSync = 9;
339 hltdc.Init.AccumulatedHBP = 53;
340 hltdc.Init.AccumulatedVBP = 11;
341 hltdc.Init.AccumulatedActiveW = 533;
342 hltdc.Init.AccumulatedActiveH = 283;
343 hltdc.Init.TotalWidth = 565;
344 hltdc.Init.TotalHeigh = 285;
345 hltdc.Init.Backcolor.Blue = 0;
346 hltdc.Init.Backcolor.Green = 255;
347 hltdc.Init.Backcolor.Red = 0;
348 if (HAL_LTDC_Init(&
hltdc) != HAL_OK)
352 pLayerCfg.WindowX0 = 0;
353 pLayerCfg.WindowX1 = 480;
354 pLayerCfg.WindowY0 = 0;
355 pLayerCfg.WindowY1 = 272;
356 pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
357 pLayerCfg.Alpha = 255;
358 pLayerCfg.Alpha0 = 0;
359 pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
360 pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
361 pLayerCfg.FBStartAdress = 0;
362 pLayerCfg.ImageWidth = 480;
363 pLayerCfg.ImageHeight = 272;
364 pLayerCfg.Backcolor.Blue = 0;
365 pLayerCfg.Backcolor.Green = 0;
366 pLayerCfg.Backcolor.Red = 0;
367 if (HAL_LTDC_ConfigLayer(&
hltdc, &pLayerCfg, 0) != HAL_OK)
371 pLayerCfg1.WindowX0 = 0;
372 pLayerCfg1.WindowX1 = 480;
373 pLayerCfg1.WindowY0 = 0;
374 pLayerCfg1.WindowY1 = 272;
375 pLayerCfg1.PixelFormat = LTDC_PIXEL_FORMAT_ARGB8888;
376 pLayerCfg1.Alpha = 255;
377 pLayerCfg1.Alpha0 = 0;
378 pLayerCfg1.BlendingFactor1 = LTDC_BLENDING_FACTOR1_PAxCA;
379 pLayerCfg1.BlendingFactor2 = LTDC_BLENDING_FACTOR2_PAxCA;
380 pLayerCfg1.FBStartAdress = 0;
381 pLayerCfg1.ImageWidth = 480;
382 pLayerCfg1.ImageHeight = 272;
383 pLayerCfg1.Backcolor.Blue = 0;
384 pLayerCfg1.Backcolor.Green = 0;
385 pLayerCfg1.Backcolor.Red = 0;
386 if (HAL_LTDC_ConfigLayer(&
hltdc, &pLayerCfg1, 1) != HAL_OK)
412 hqspi.Instance = QUADSPI;
413 hqspi.Init.ClockPrescaler = 255;
414 hqspi.Init.FifoThreshold = 1;
415 hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_NONE;
416 hqspi.Init.FlashSize = 1;
417 hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_1_CYCLE;
418 hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
419 hqspi.Init.FlashID = QSPI_FLASH_ID_1;
420 hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
421 if (HAL_QSPI_Init(&
hqspi) != HAL_OK)
447 huart1.Init.BaudRate = 115200;
448 huart1.Init.WordLength = UART_WORDLENGTH_8B;
449 huart1.Init.StopBits = UART_STOPBITS_1;
450 huart1.Init.Parity = UART_PARITY_NONE;
451 huart1.Init.Mode = UART_MODE_TX_RX;
452 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
453 huart1.Init.OverSampling = UART_OVERSAMPLING_16;
454 huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
455 huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
456 if (HAL_UART_Init(&
huart1) != HAL_OK)
474 FMC_SDRAM_TimingTypeDef SdramTiming = {0};
482 hsdram1.Instance = FMC_SDRAM_DEVICE;
484 hsdram1.Init.SDBank = FMC_SDRAM_BANK1;
485 hsdram1.Init.ColumnBitsNumber = FMC_SDRAM_COLUMN_BITS_NUM_8;
486 hsdram1.Init.RowBitsNumber = FMC_SDRAM_ROW_BITS_NUM_12;
487 hsdram1.Init.MemoryDataWidth = FMC_SDRAM_MEM_BUS_WIDTH_16;
488 hsdram1.Init.InternalBankNumber = FMC_SDRAM_INTERN_BANKS_NUM_4;
489 hsdram1.Init.CASLatency = FMC_SDRAM_CAS_LATENCY_1;
490 hsdram1.Init.WriteProtection = FMC_SDRAM_WRITE_PROTECTION_DISABLE;
491 hsdram1.Init.SDClockPeriod = FMC_SDRAM_CLOCK_DISABLE;
492 hsdram1.Init.ReadBurst = FMC_SDRAM_RBURST_DISABLE;
493 hsdram1.Init.ReadPipeDelay = FMC_SDRAM_RPIPE_DELAY_0;
495 SdramTiming.LoadToActiveDelay = 16;
496 SdramTiming.ExitSelfRefreshDelay = 16;
497 SdramTiming.SelfRefreshTime = 16;
498 SdramTiming.RowCycleDelay = 16;
499 SdramTiming.WriteRecoveryTime = 16;
500 SdramTiming.RPDelay = 16;
501 SdramTiming.RCDDelay = 16;
503 if (HAL_SDRAM_Init(&
hsdram1, &SdramTiming) != HAL_OK)
520 GPIO_InitTypeDef GPIO_InitStruct = {0};
525 __HAL_RCC_GPIOE_CLK_ENABLE();
526 __HAL_RCC_GPIOG_CLK_ENABLE();
527 __HAL_RCC_GPIOB_CLK_ENABLE();
528 __HAL_RCC_GPIOJ_CLK_ENABLE();
529 __HAL_RCC_GPIOD_CLK_ENABLE();
530 __HAL_RCC_GPIOK_CLK_ENABLE();
531 __HAL_RCC_GPIOF_CLK_ENABLE();
532 __HAL_RCC_GPIOI_CLK_ENABLE();
533 __HAL_RCC_GPIOC_CLK_ENABLE();
534 __HAL_RCC_GPIOA_CLK_ENABLE();
535 __HAL_RCC_GPIOH_CLK_ENABLE();
538 HAL_GPIO_WritePin(LCD_BL_CTRL_GPIO_Port, LCD_BL_CTRL_Pin, GPIO_PIN_RESET);
541 HAL_GPIO_WritePin(GPIOI, LED_Pin|LCD_DISP_Pin, GPIO_PIN_RESET);
544 GPIO_InitStruct.Pin = LCD_BL_CTRL_Pin;
545 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
546 GPIO_InitStruct.Pull = GPIO_NOPULL;
547 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
548 HAL_GPIO_Init(LCD_BL_CTRL_GPIO_Port, &GPIO_InitStruct);
551 GPIO_InitStruct.Pin = LED_Pin|LCD_DISP_Pin;
552 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
553 GPIO_InitStruct.Pull = GPIO_NOPULL;
554 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
555 HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);
558 GPIO_InitStruct.Pin = BUTTON_Pin;
559 GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
560 GPIO_InitStruct.Pull = GPIO_NOPULL;
561 HAL_GPIO_Init(BUTTON_GPIO_Port, &GPIO_InitStruct);
static void MX_LTDC_Init(void)
LTDC Initialization Function.
static void vDebounce(TS_StateTypeDef *)
Debounce van de touchScreen *.
void Error_Handler(void)
This function is executed in case of error occurrence.
static void MX_QUADSPI_Init(void)
QUADSPI Initialization Function.
UART_HandleTypeDef huart1
SDRAM_HandleTypeDef hsdram1
static void MX_USART1_UART_Init(void)
USART1 Initialization Function.
DMA2D_HandleTypeDef hdma2d
void SystemClock_Config(void)
System Clock Configuration.
static void MX_DMA2D_Init(void)
DMA2D Initialization Function.
int main(void)
The application entry point.
uint8_t globalReceive
Globale variabele voor communicatie tussen twee aparte functies.
int _write(int file, char *ptr, int len)
static void MX_FMC_Init(void)
static void MX_GPIO_Init(void)
GPIO Initialization Function.