首页 > 其他分享 >【专题STM32F103】移植STemWin5.44+ ILI9341显示无触摸屏 + cubemx+野火霸道V2

【专题STM32F103】移植STemWin5.44+ ILI9341显示无触摸屏 + cubemx+野火霸道V2

时间:2024-04-20 20:33:59浏览次数:17  
标签:STM32F103 int void STemWin5.44 修改 V2 OS GUI ILI9341

在已经做好LCD_ ILI9841的基础上,进行移植,不考虑触摸屏。

 一、无操作系统移植

第一步: 找到STemWin5.44库文件。

 

第二步:将相关文件放在Project文件夹内,设置项目相关参数。

添加:GUI_X.c  GUI_config.c  LCDConf_FlexColor_Template.c  和 STemWin_CM3_wc16_ARGB.a(无OS)  到工程内。

第三步:移植STemWin5.44

3.1 修改GUI_config.h,不适用的项目括号内填 0。

 

3.2 修改GUI_config.c

#define GUI_NUMBYTES  (1024*20)

 

3.3 修改LCDConf_FlexColor_Template.c,从上到下是:

#include "./lcd/bsp_ili9341_lcd.h"  // 添加

#define XSIZE_PHYS 240 // 修改 To be adapted to x-screen size

#define YSIZE_PHYS 320 // 修改 To be adapted to y-screen size

static void LcdWriteReg(U16 usCmd) {

// ... TBD by user
* ( __IO uint16_t * ) ( FSMC_Addr_ILI9341_CMD ) = usCmd; // 添加
}

 static void LcdWriteData(U16 usData) {

// ... TBD by user
* ( __IO uint16_t * ) ( FSMC_Addr_ILI9341_DATA ) = usData;// 添加
}

static void LcdWriteDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
* ( __IO uint16_t * ) ( FSMC_Addr_ILI9341_DATA ) = *pData;// 添加
pData++;// 添加
}
}

static void LcdReadDataMultiple(U16 * pData, int NumItems) {
while (NumItems--) {
// ... TBD by user
*pData =* ( __IO uint16_t * ) ( FSMC_Addr_ILI9341_DATA );// 添加
pData++;// 添加
}
}

void LCD_X_Config(void) {

Config.FirstCOM = 0; //modify by fire
Config.FirstSEG = 0; //modify by fire

Config.Orientation = GUI_MIRROR_Y|GUI_MIRROR_X; //修改 竖屏
Config.Orientation = GUI_SWAP_XY | GUI_MIRROR_Y; //修改 横屏

GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66709, GUIDRV_FLEXCOLOR_M16C0B16);//修改
//  查   User & Reference Guide, 通过CTRL+F 找到ILI9341 适合 GUIDRV_FLEXCOLOR_F66709   GUIDRV_FLEXCOLOR_M16C0B16参数。

}

3.4 修改GUI_X.c

void GUI_X_Delay(int ms) {
// int tEnd = OS_TimeMS + ms;
// while ((tEnd - OS_TimeMS) > 0);
HAL_Delay(ms); // 修改
}

 4.测试, 在main.c中依次加入如下代码。

#include "./lcd/bsp_ili9341_lcd.h"

#include "GUI.h" //EmWin头文件

 

ILI9341_Init (); //LCD 初始化
//绘制触摸画板界面
RCC->AHBENR|=1<<6; //开启CRC时钟
GUI_Init(); //STemwin初始化
GUI_SetBkColor(GUI_RED); //设置背景颜色
GUI_Clear(); //清屏

//其中0、3、5、6 模式适合从左至右显示文字,
//不推荐使用其它模式显示文字 其它模式显示文字会有镜像效果
//其中 6 模式为大部分液晶例程的默认显示方向
ILI9341_GramScan( 6 );
GUI_SetFont(GUI_FONT_24B_1);
GUI_DispString("Hello World!\r\nUse FreeRTOS\r\nSTemWin GUI");

 

 二、FreeRTOS操作系统移植

步骤类似,不同之处有:

第二步:将相关文件放在Project文件夹内,设置项目相关参数。

添加:GUI_X_OS.c  GUI_config.c  LCDConf_FlexColor_Template.c  和 STemWin_CM3_OS_wc16_ARGB.a(OS)  到工程内。

第三步:移植STemWin5.44

3.4 修改GUI_X_OS.c


/* FreeRTOS头文件 */
#include "FreeRTOS.h" //修改
#include "task.h" //修改
#include "semphr.h" //修改

int GUI_X_GetTime(void)

{
//return ((int) osKernelSysTick());
return ((int) xTaskGetTickCount()); //修改
}

void GUI_X_Delay(int ms)
{
//osDelay( ms );
vTaskDelay( ms ); //修改
}

/* Init OS */
void GUI_X_InitOS(void)
{
/* Create Mutex lock */
// osMutexDef(MUTEX);
/* Create the Mutex used by the two threads */
//osMutex = osMutexCreate(osMutex(MUTEX));
/* Create Semaphore lock */
// osSemaphoreDef(SEM);
/* Create the Semaphore used by the two threads */
//osSemaphore= osSemaphoreCreate(osSemaphore(SEM), 1);

/* 创建互斥信号量 用于资源共享 */
xQueueMutex = xSemaphoreCreateMutex();//修改
configASSERT (xQueueMutex != NULL);//修改
/* 创建二值信号量 用于事件触发 */
vSemaphoreCreateBinary( xSemaTxDone );//修改
configASSERT ( xSemaTxDone != NULL );//修改
}

void GUI_X_Unlock(void)
{
//osMutexRelease(osMutex);
/* 给出互斥量 */
xSemaphoreGive(xQueueMutex);//修改
}

void GUI_X_Lock(void)
{
//osMutexWait(osMutex , osWaitForever) ;
if(xQueueMutex == NULL)//修改
{
GUI_X_InitOS();//修改
}
/* 获取互斥量 */
xSemaphoreTake(xQueueMutex, /* 互斥量句柄 *///修改
portMAX_DELAY);/* 阻塞等待 */
}

/* Get Task handle */
U32 GUI_X_GetTaskId(void)
{
//return ((U32) osThreadGetId());
return ((U32) xTaskGetCurrentTaskHandle());
}


void GUI_X_WaitEvent (void)
{
//osSemaphoreWait(osSemaphore , osWaitForever) ;
/* 获取信号量 */
while(xSemaphoreTake(xSemaTxDone, /* 信号量句柄 */ //修改
portMAX_DELAY) != pdTRUE);/* 阻塞等待 */ //修改
}


void GUI_X_SignalEvent (void)
{
//osMutexRelease(osSemaphore);
/* 给出信号量 */
xSemaphoreGive(xSemaTxDone);//修改
}

标签:STM32F103,int,void,STemWin5.44,修改,V2,OS,GUI,ILI9341
From: https://www.cnblogs.com/excellentHellen/p/18133502

相关文章

  • 界面组件库DevExpress Office File API(WinForms & WPF)v24.1新功能预览
    本文描述了界面组件库DevExpress的OfficeFileAPI(WinForms&WPF)和受Office启发的控件在v24.1中发布的一些功能,并详细介绍了我们当前的抢先体验预览版本v24.1中的内容。DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress......
  • stm32f103使用RT-Thread组件fal读写内部flash
    本次使用RT-Threadstudio编写,使用为5.02完整版,目的是将内部flash进行分区,可以直接在内部flash存储数据。一、功能配置首先是打开设置里的FAL组件,因为我这里不需要外部内存,SFUD驱动就没打开:然后是配置两个参数,一个在board.h里,定义BSP_USING_ON_CHIP_FLASH,一个是在stm32xxxx_hal_......
  • Kubernetes dashboardv2.7.0 无法访问解决过程
    问题及报错:K8S部署前端可视化dashboard插件成功后,但是运维一段时间后发现访问不了了。 排查过程:1、查看pod状态,发现拉镜像失败。我就很奇怪怎么又拉镜像了。1kubectlgetpod-nkubernetes-dashboard23kubectldescribepodkubernetes-dashboard-6c7ccbcf87-kz7q9-n......
  • New!界面控件DevExpress WinForms v24.1预览版抢先体验
    DevExpressWinForm拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!在之前的文章中(点击这里回顾>>),我们为大家介绍了DevE......
  • 界面控件DevExpress Blazor UI v23.2 - 浅谈增强的可访问性
    DevExpress BlazorUI组件库提供了一套全面的原生Blazor组件(包括DataGrid、PivotGrid、调度程序、图表、数据编辑器和报表),使用C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验!获取DevExpressv23.2正式版下载DevExpress技术交流群10:532598169      欢迎......
  • 基于yolov2深度学习网络的螺丝螺母识别算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本matlab2022a 3.算法理论概述      在工业自动化和质量控制领域,准确且高效的螺丝螺母识别至关重要。深度学习方法,特别是基于卷积神经网络(CNN)的目标检测技术,因其卓越的特征提取能力,成为解决此类问题的有效手段。YOLOv2......
  • 界面组件DevExpress WinForms v23.2 - 数据展示、UI模板功能全新升级
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件日前正式发布了v23.2,此版......
  • cv2.imshow显示图片不全
    我们在屏幕上显示图片会用这个命令:cv2.imshow('img',pic),假如图片分辨率比较大,那么会出现显示不全的情况,例如:解决办法:在cv2.imshow前面加上cv2.namedWindow代码注意:两行代码中的窗口名必须保持一致不然无效,我这里都是'img'cv2.namedWindow('img',cv2.WINDOW_NORMAL)......
  • PP-HumanSeg安装、运行、基于PP-HumanSegV2-Lite训练、测试(ubuntu虚拟机 cpu版本)
    参考paddleseg官网【PaddleSeg实践范例】PP-HumanSegV2SOTA人像分割方案github的readme: https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.9/README_CN.md零、准备工作0.安装Anacondaubantu下安装Anaconda、pycharm1.用conda创建虚拟环境#1.查询conda环......
  • 5.CentOS-7-Minimal 安装KubernetesV1.23.17&DockerV20.10.23
    1.环境准备主节点IP:192.168.254.130node1IP:192.168.254.131node2IP:192.168.254.132OSversion:CentOS7miniCPUArchitecture:x86_64/amd64K8sversion:v1.23.17Dockerversion:20.10.232.安装前准备#安装依赖yuminstall-ycurlwgetsystemdbash-completi......