f407_test/App/mainloop.cpp
2020-01-31 15:15:32 +01:00

55 lines
1.4 KiB
C++

/*
* mainloop.cpp
*
* Created on: Sep 11, 2019
* Author: abody
*/
#include <ili9341.h>
#include "main.h"
#include <mainloop.h>
#include <initializer_list>
#define BORDER 60
#define BARWIDTH 2
void MainLoop()
{
uint16_t colors[] = {
Ili9341Fsmc::ILI9341_RED, Ili9341Fsmc::ILI9341_ORANGE, Ili9341Fsmc::ILI9341_YELLOW, Ili9341Fsmc::ILI9341_GREENYELLOW,
Ili9341Fsmc::ILI9341_GREEN, Ili9341Fsmc::ILI9341_CYAN, Ili9341Fsmc::ILI9341_BLUE, Ili9341Fsmc::ILI9341_MAGENTA
};
static uint16_t const colorCount = sizeof(colors)/sizeof(colors[0]);
uint32_t lastTick = 0;
uint32_t tmpTick;
uint32_t lastDiff;
//LL_SYSTICK_EnableIT();
Ili9341Fsmc &lcd(Ili9341Fsmc::Init(nullptr, nullptr, DMA2, LL_DMA_STREAM_4, true));
lcd.FillRect(Ili9341Fsmc::ILI9341_WHITE);
lcd.FillRect(BORDER, BORDER, lcd.Width()- BORDER * 2, lcd.Height()-BORDER * 2, Ili9341Fsmc::ILI9341_BLACK);
uint16_t offset = 0;
uint16_t maxidx = (lcd.Width() - BARWIDTH) / BARWIDTH;
for(;;) {
uint16_t idx = 0;
while(idx <= maxidx ) {
lcd.FillRect(idx * BARWIDTH, 0, BARWIDTH, lcd.Height(), colors[(idx+offset) % colorCount]);
++idx;
}
offset = (offset+1)%colorCount;
tmpTick = HAL_GetTick();
lastDiff = tmpTick - lastTick;
do tmpTick = HAL_GetTick(); while(tmpTick - lastTick < 20);
lastTick = tmpTick;
// LL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
// LL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
// LL_mDelay(25);
}
}
MainLoop::MainLoop()
{
}