Skip to main content

Working with STM32

Working with STM32F103RBT6

Hardware Connection

Required Components

  • RGB-Matrix-P4-80x40 (included in this product)
  • 2 × 8PIN 2.54mm pitch cable (included in this product)
  • STM32F103RB (must be purchased separately)

Hardware Connection

tip
  • The example is developed based on the HAL library. Download the program, locate the STM32 program file directory, and open HUB75.uvprojx in the STM32\STM32F103RBT6\MDK-ARM directory to view the program.
  • Compile and download, then connect the screen to start the display (make sure to connect an external 5V 4A power supply; otherwise, the drive current will be drawn from the STM32 GPIO, which may damage the I/O pins).

3. STM32 Project Parameter Settings

Code Description

int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_TIM1_Init();
/* USER CODE BEGIN 2 */

DWT_Init();
HUB75_Init();
HUB75_SetBrightness(255); // the parameter is 0-255, the higher the number, the brighter the screen is
HUB75_SetRefreshRate(1); // the parameter is 1-4, the higher the number, the brighter the screen is
App_DrawGuiScreen();

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
UWORD page = 0U;
while (true)
{
App_WaitMsWithRefresh(1000U);
page = (UWORD)((page + 1U) % 3U);
App_DrawPage(page);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}

Code Analysis

  • App_DrawPage():

    • Draws different display content based on the page number.
    • Page 1 displays basic graphics such as points, lines, circles, and borders;
    • Page 2 displays the text "Hello" and "world";
    • Page 3 displays "Page3" and a number.
    • After drawing, the buffer content is loaded to the HUB75 screen.
  • HUB75_LoadRGB565Frame(gui_framebuffer, HUB75_PANEL_WIDTH, HUB75_PANEL_HEIGHT):

    • Transfers the RGB565 image data from the current frame buffer to the HUB75 display driver, preparing it for display on the LED matrix screen.
  • App_WaitMsWithRefresh():

    • Continuously calls HUB75_Display() while waiting for the specified time, ensuring the screen refreshes during the delay to avoid flicker or blanking.
  • App_DrawGuiScreen():

    • Initializes the drawing buffer, sets canvas parameters, and by default draws the content of page 1 first.
  • HUB75_SetBrightness(255):

    • Sets the screen brightness to the maximum value, making the display content clearer and brighter.
  • HUB75_SetRefreshRate(1):

    • Sets the HUB75 screen refresh parameter to control display stability and refresh speed.
  • while (true):

    • Main program loop, switches pages every 1 second, causing the three interface contents to cycle in order.
  • page = (page + 1U) % 3U:

    • Cycles the page number among 0, 1, and 2, ensuring that the graphics page, text page, and number page are repeatedly displayed in sequence.
  • main():

    • The program entry point, responsible for initializing STM32 peripherals and the HUB75 display driver, creating the initial screen, and continuously switching between different page contents for display in the main loop.

Operation Result