#ifndef _LCDSHOW_H_
#define _LCDSHOW_H_
#include "main.h"
#include "stm32_lcd.h"
#include "tim.h"
#include "stm32h745i_discovery_lcd.h"
#include "rng.h"
#include "stdio.h"
void RNG_WIDTH(uint16_t *WIDTH);
void RNG_HEIGHT(uint16_t *HEIGHT);
void RNG_COLOR(void);
#endif
#include "lcd_show.h"
void RNG_WIDTH(uint16_t *WIDTH){
uint16_t min = 50;
uint16_t max = 400;
uint32_t rng_data;
HAL_RNG_GenerateRandomNumber(&hrng,&rng_data);
*WIDTH = rng_data%(max-min+1)+min;
}
void RNG_HEIGHT(uint16_t *HEIGHT){
uint16_t min = 10;
uint16_t max = 252;
uint32_t rng_data;
HAL_RNG_GenerateRandomNumber(&hrng,&rng_data);
*HEIGHT = rng_data%(max-min+1)+min;
}
void RNG_COLOR(void){
uint16_t COLOR;
uint16_t min = 0;
uint16_t max = 23;
uint32_t rng_data;
uint32_t color_data;
HAL_RNG_GenerateRandomNumber(&hrng,&rng_data);
COLOR = rng_data%(max-min+1)+min;
switch(COLOR){
case 0:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BLUE);
break;
case 1:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_GREEN);
break;
case 2:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_RED);
break;
case 3:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_CYAN);
break;
case 4:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_MAGENTA);
break;
case 5:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_YELLOW);
break;
case 6:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTBLUE);
break;
case 7:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTGREEN);
break;
case 8:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTRED);
break;
case 9:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTCYAN);
break;
case 10:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTMAGENTA);
break;
case 11:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTYELLOW);
break;
case 12:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKBLUE);
break;
case 13:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKGREEN);
break;
case 14:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKRED);
break;
case 15:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKCYAN);
break;
case 16:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKMAGENTA);
break;
case 17:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKYELLOW);
break;
case 18:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_LIGHTGRAY);
break;
case 19:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_GRAY);
break;
case 20:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKGRAY);
break;
case 21:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BLACK);
break;
case 22:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_BROWN);
break;
case 23:
UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_ORANGE);
break;
}
}
在主函数中每秒在任意位置显示一段“Hello World”并且每10秒清除。
if(cnt==100){
cnt = 0;
RNG_COLOR();
RNG_WIDTH(&RNG_W);
printf("RNG_WIDTH:%d\r\n",RNG_W);
RNG_HEIGHT(&RNG_H);
printf("RNG_HEIGHT:%d\r\n",RNG_H);
HAL_GPIO_TogglePin(LD1_GPIO_Port,LD1_Pin);
UTIL_LCD_DisplayStringAt(RNG_W, RNG_H, (uint8_t *)"Hello World", CENTER_MODE);
pm_cnt++;
}
if(pm_cnt==10){
pm_cnt = 0;
UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);
}
HAL_Delay(10);
cnt++;