[STM32L5] 【STM32L562 DK试用】基础外设体验

📅 发布时间:2026/7/10 20:06:32 👁️ 浏览次数:
[STM32L5] 【STM32L562 DK试用】基础外设体验
开发板自带了一块240*240分辨率的触摸屏本次基于官方demo进行修改从而在屏幕上显示相应的文字。首先进行系统和时钟的初始化复制HAL_StatusTypeDef HAL_Init(void){HAL_StatusTypeDef status HAL_OK;/* Set Interrupt Group Priority */HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_3);/* Insure time base clock coherency */SystemCoreClockUpdate();/* Use SysTick as time base source and configure 1ms tick (default clock after Reset is MSI) */if (HAL_InitTick(TICK_INT_PRIORITY) ! HAL_OK){status HAL_ERROR;}else{/* Init the low level hardware */HAL_MspInit();}/* Return function status */return status;}然后进行相关HMI设备和LED等的初始化复制static void SystemHardwareInit(void){/* Init LEDs */if (LedInitialized ! SET){if (BSP_LED_Init(LED9) ! BSP_ERROR_NONE){Error_Handler();}if (BSP_LED_Init(LED10) ! BSP_ERROR_NONE){Error_Handler();}LedInitialized SET;}/* Init User push-button in EXTI Mode */if (ButtonInitialized ! SET){if (BSP_PB_Init(BUTTON_USER, BUTTON_MODE_EXTI) ! BSP_ERROR_NONE){Error_Handler();}ButtonInitialized SET;}/* Initialize the LCD */if (LcdInitialized ! SET){LCD_UTILS_Drv_t lcdDrv;/* Initialize the LCD */if (BSP_LCD_Init(0, LCD_ORIENTATION_PORTRAIT) ! BSP_ERROR_NONE){Error_Handler();}/* Set UTIL_LCD functions */lcdDrv.DrawBitmap BSP_LCD_DrawBitmap;lcdDrv.FillRGBRect BSP_LCD_FillRGBRect;lcdDrv.DrawHLine BSP_LCD_DrawHLine;lcdDrv.DrawVLine BSP_LCD_DrawVLine;lcdDrv.FillRect BSP_LCD_FillRect;lcdDrv.GetPixel BSP_LCD_ReadPixel;lcdDrv.SetPixel BSP_LCD_WritePixel;lcdDrv.GetXSize BSP_LCD_GetXSize;lcdDrv.GetYSize BSP_LCD_GetYSize;lcdDrv.SetLayer BSP_LCD_SetActiveLayer;lcdDrv.GetFormat BSP_LCD_GetFormat;UTIL_LCD_SetFuncDriver(lcdDrv);/* Clear the LCD */UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);/* Set the display on */if (BSP_LCD_DisplayOn(0) ! BSP_ERROR_NONE){Error_Handler();}LcdInitialized SET;}/* Initialize the TouchScreen */if (TsInitialized ! SET){TS_Init_t TsInit;/* Initialize the TouchScreen */TsInit.Width 240;TsInit.Height 240;TsInit.Orientation TS_ORIENTATION_PORTRAIT;TsInit.Accuracy 10;if (BSP_TS_Init(0, TsInit) ! BSP_ERROR_NONE){Error_Handler();}/* Configure TS interrupt */if (BSP_TS_EnableIT(0) ! BSP_ERROR_NONE){Error_Handler();}TsInitialized SET;}}调用屏幕API进行显示复制static void Display_DemoDescription(void){char desc[60];/* Set font */UTIL_LCD_SetFont(Font20);/* Clear the LCD */UTIL_LCD_Clear(UTIL_LCD_COLOR_WHITE);/* Set the LCD Text Color */UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_DARKBLUE);UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_WHITE);/* Display LCD messages */UTIL_LCD_DisplayStringAt(0, 10, (uint8_t *)STM32L562E-DK BSP, CENTER_MODE);UTIL_LCD_DisplayStringAt(0, 35, (uint8_t *)drivers example, CENTER_MODE);/* Draw Bitmap */UTIL_LCD_DrawBitmap(80, 65, (uint8_t *)st**);UTIL_LCD_SetFont(Font8);UTIL_LCD_DisplayStringAt(0, 220, (uint8_t *)Copyright (c) STMicroelectronics 2019, CENTER_MODE);UTIL_LCD_SetFont(Font12);UTIL_LCD_FillRect(0, 145, 240, 50, UTIL_LCD_COLOR_BLUE);UTIL_LCD_SetTextColor(UTIL_LCD_COLOR_WHITE);UTIL_LCD_SetBackColor(UTIL_LCD_COLOR_BLUE);UTIL_LCD_DisplayStringAt(0, 135, (uint8_t *)Hello 21IC, CENTER_MODE);UTIL_LCD_DisplayStringAt(0, 150, (uint8_t *)Press User push-button, CENTER_MODE);UTIL_LCD_DisplayStringAt(0, 165, (uint8_t *)to start :, CENTER_MODE);sprintf(desc,%s example, BSP_examples[DemoIndex].DemoName);UTIL_LCD_DisplayStringAt(0, 180, (uint8_t *)desc, CENTER_MODE);}显示效果---------------------作者lishuihua链接https://bbs.21ic.com/forum.php?modviewthreadtid3437260来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。