#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++;