ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:19.96KB ,
资源ID:11297513      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11297513.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(stmcubemx系列教程stemwim移植.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

stmcubemx系列教程stemwim移植.docx

1、stmcubemx系列教程stemwim移植STM32CubeMX 系列教程 24:STemWim 移植摘要:本章教程率领大伙儿移植 StmemWin 5.22 到 STM32 的 LDTC 接口操纵 的 RGB 接口屏幕。(注:本章只针对 STM32 芯片 F7,F4 系列带 LDTC 接口操纵的 RGB 屏幕,对F1 系列通过 FMC 操纵的带操纵器的屏幕不适用)一、STemWin 简介emWin 是 segger 公司出一种高效的而图形用户界面,是咱们能够摆脱处置器和显示操纵器而更专注于 GUI 的设计。uCGUI 是 segger 公司授权 Micrum 公司推出 的,uCOS 操作系

2、统也是那个公司出的。STemWin 是 SEGGER 公司授权给 ST 的,使用 ST 芯片的用户能够免费利用 STemWin。出于必然爱惜方法,STemWin 的库是不 能用在其他公司的处置器上,因为工程初始化 STemWin 前要使能 CRC 查验。二、新建工程本章以上一章 LCD 触摸操纵工程的基础上移植,复制上一章 Touch 的工程,修改文件夹名。打开STM32cubeMX 的工程文件从头配置,开启 CRC 校验。CRC 为默许配置。LDTC,FMC(SDRAM),DMA2D 配置仍是依照原先的设置,那个地址再也不详细简介。另外注意一点堆栈的大小设置大一点,不然会程序会触发硬件错误中

3、断(HardFault)。生成报告和初始化代码,编译程序。在 ST 固件库中能够找到 STemWin 的文件,途径:STM32Cube_FW_F7_V1.3.0MiddlewaresSTSTemWin其目录结构如下,其中 Config 为配置文件和移植相关,Lib 为 STemWin 封装 库,emWin 5.22 再也不提供源码,Software 为电脑上用到的软 件,Documentation 为 STemWin 的利用文档。将 STemWin 文件夹复制到工程目录下。在下面的途径下找到 Demo 程序目录 复制到适才的 STemWin 目录STM32Cube_FW_F7_V1.3.0Pr

4、ojectsSTM32756G_EVALApplicationsSTemWinSTemWin_SampleDemo感动工程添加应用文件:那个地址简单介绍一下 STemWin 的几个文件。1.stm32746g_sdram.c 为 SDRAM 驱动文件,程序中利用 SDRAM 作为 LCD的显存2.GT811.c 为触摸芯片驱动文件,TS_I2C.c 为模拟 I2C 驱动文件3.GUIConf.c 为 STemWin 软件包中 Config 目录下的文件。4.GUI_X.c 文件为 OS 目录下的文件,其中 GUI_X.c 为不带操作系统。 版本,GUI_X_OS.c 为带操作系统版本。本实验不

5、带 OS。5.LCDConf.c 为 LCD 底层移植文件,需要用户实现。Config 目录下面提供几 种移植模块。本章是那个底层移植文件是复制 STM32 库固件 STM32746G-Discovery 例如程序的模板再修改。将那个途径下的 LCDConf.c 文件,和 Inc 目录下的 LCDConf.h 文件复制到Config 目录中并添加进工程。STM32Cube_FW_F7_V1.3.0ProjectsSTM32746G-DiscoveryApplicationsSTemWinSTemWin_HelloWorldSrc6. 为 STemWin 封装库文件,emWin 5.22 再也不

6、提供 源码,而是提供封装库。Lib 目录下含有 KEIL,IRA 和 GCC 三个编译环境的 库,而且还区分带 OS 和不带 OS 版本。本教程选择 KEIL 不带 OS 版本。7.Demo 程序里面包括很多显示程序,为 STemWin 的例如程序,展现STemWin 的各类控件的功能。直接复制固件库 STM32756G_EVAL 的 STemWinDemo 程序途径如下:STM32Cube_FW_F7_V1.3.0ProjectsSTM32756G_EVALApplicationsSTemWinSTemWin_Sampl eDemo最后要添加目录的途径到工程。三、STemWin 底层移植最后

7、修改一下底层移植文件,GUI_Init 初始化流程图如下(可能有些函数有改变)。底层移植主若是 GUI_X_Config()、LCD_X_Config()和 LCD_X_DisplayDriver()三个函数。打开 GUIConf.c 文件,找到 下面宏概念01 /02 / Define the available number of bytes available for the GUI03 /04 #define GUI_NUMBYTES(1024)*150050 /*6 *07 *08 * Public code09 *1 *1*11*/1/*2*13 *14 *GUI_X_Config

8、15*16* Purpose:*Called during the initialization process in order to set up17 the18 *available memory for the GUI.19*/20void GUI_X_Config(void) 21/22/ 32 bit aligned memory area23/24static U32 aMemoryGUI_NUMBYTES / 4;25/26/ Assign memory to emWin27/28GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);29/

9、30/ Set default font31/32GUI_SetDefaultFont(GUI_FONT_6X8);33此处初始化 GUI 可用内存,宏概念 GUI 的内存大小改小一点,不然编译程序会提示空间不足错误。1 / Define the available number of bytes available for the GUI2 /3 #define GUI_NUMBYTES(1024)*150LCD_X_Config()和 LCD_X_DisplayDriver()函数能够在 LCDConf.c 文件中找到,下载重点讲解一下如何修改一下 LCDConf.c 文件.#define

10、 XSIZE_PHYS 480 #define YSIZE_PHYS 272改成#define XSIZE_PHYS 1024 #define YSIZE_PHYS 6002.修改图像格式,此处改成 RGB565 格式。程序中设置的是单层显示,故只需layer 0;#define COLOR_CONVERSION_0 GUICC_M8888I#define DISPLAY_DRIVER_0 GUIDRV_LIN_32改成01#define COLOR_CONVERSION_0GUICC_M56502#define DISPLAY_DRIVER_0GUIDRV_LIN_160304/*05* b

11、riefReturn Pixel format for a given layer06* paramLayerIndex : Layer Index07* retval Status ( 0 :0k , 1: error)08*/09 static inline U32 LCD_LL_GetPixelformat(U32 LayerIndex) 10 11if (LayerIndex = 0)1213return LTDC_PIXEL_FORMAT_RGB565;1415else1617return LTDC_PIXEL_FORMAT_ARGB1555;1819上面函数中也改成return L

12、TDC_PIXEL_FORMAT_RGB565;3.修改显存地址,Open746I-C 的 SDRAM 接到区域 2,起始地址为 0xD0000000。1/* From SDRAM */2#define LCD_LAYER0_FRAME_BUFFER(int)0xC0200000)3#define LCD_LAYER1_FRAME_BUFFER(int)0xC0400000)45/* From SDRAM */6#define LCD_LAYER0_FRAME_BUFFER(int)0xD0200000)7#define LCD_LAYER1_FRAME_BUFFER(int)0xD04000

13、00)LCD_LL_LayerInit 函数中图层的地址也改成layer_cfg.FBStartAdress = (uint32_t)0xD0000000);4.由于 DMA2D、LTDC 的初始化已经有 Cube 自动生成的,故不需再在LCDConf.c 中初始化。故LTDC and DMA2D BSP Routines 部份的初始化函数能够注释掉。下面两个变量也注释掉LTDC_HandleTypeDef hltdc;static DMA2D_HandleTypeDef hdma2d;添加 ltdc.h、dma2d.h 头文件/* Includes -*/#include LCDConf.h

14、 #include GUI_Private.h #include ltdc.h #include dma2d.h另外一下其他改动我就不详细说明了,我那个地址提供一个已经修改好的文件。Dem 总包括的 头文件去掉,改成#include stm32f7xx_hal.h编译程序,看程序还有错误提示。四、编辑应用程序在 main 函数中添加应用程序,程序中先初始化 SDRAM,GUI 和 GT811 触摸操纵芯片。最后挪用 Demo main 函数展现各类酷炫成效。01/* USER CODE BEGIN 2 */02/* Initializes the SDRAM device */03BSP_SD

15、RAM_Init();0405/* Init the STemWin GUI Library */06GUI_Init();0708/* Initialize the GT811 */09GT811_Init();1011/* Activate the use of memory device feature */12WM_SetCreateFlags(WM_CF_MEMDEV);1314/* Start Demo */15GUIDEMO_Main();16/* USER CODE END 2 */STemWin 的触屏移植只若是通过 GUI_TOUCH_StoreStateEx 函数不断将当

16、前的 触摸状态更新到 GUI 即可。能够按时器周期性的挪用那个函数,本校准是通过 触摸中断函数处置,当有触摸时触发外部中断,然后掉用次函数更新坐标到GUI。在 main.c 文件后面添加中断效劳函数。01/* USER CODE BEGIN 4 */02/* briefProvide the GUI with current state of the touch03 screen04* paramNone05* retval None06*/07 void BSP_Pointer_Update(void)0809GUI_PID_STATE TS_State;10TS_StateTypeDeft

17、s = 0;1112GT811_GetState(&ts);1314TS_State.Pressed = ts.touchDetected & 0x01;15if(TS_State.Pressed != 0 )1617TS_State.Layer = 0;18=ts.touchX0;19=ts.touchY0;20GUI_TOUCH_StoreStateEx(&TS_State);21222324/*25* 26*/27void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)2829if(GPIO_Pin = GPIO_PIN_7)3031 BSP_Poin

18、ter_Update();323334/* USER CODE END 4 */另外 GUI 需要一个时基源,本教程用 SysTick 作为 GUI 的时基源。在stm32f7xx_it.c 文件中添加 GUIt 头文件已经声明外部变量 OS_TimeMS。1/* USER CODE BEGIN 0 */2#include GUI.h3 extern volatile GUI_TIMER_TIME OS_TimeMS; 4 /* USER CODE END 0 */在 SysTick 中断处置函数中添加语句,使 OS_TimeMS 加 1 计时。01 /*02 * brief This fun

19、ction handles System tick timer.03 */04 void SysTick_Handler(void)05 06 /* USER CODE BEGIN SysTick_IRQn 0 */ 0708 /* USER CODE END SysTick_IRQn 0 */9HAL_IncTick();10HAL_SYSTICK_IRQHandler();11/* USER CODE BEGIN SysTick_IRQn 1 */12OS_TimeMS+;13/* USER CODE END SysTick_IRQn 1 */14最后编译程序,并下载到开发板,若是没有错误

20、那么 LCD 上会显示各类酷炫吊炸天的界面。第一说明下开发条件:1、开发板:秉火霸道,STM32F103ZET2、软件:(F1 V1.60 库)移植中注意的问题:1、裸机移植 STemWin 时,TFT 液晶屏驱动函数所在文件不能是“LCD.C”和“LCD.h”(不区 分大小写),这一步比较重要,因为 STemWin 的库中有一个“LCD.h”的头文件!在 文件中的 void LCD_X_Config(void)函数里面的最后一 句话为:GUIDRV_FlexColor_SetFunc(pDevice,&PortAPI,GUIDRV_FLEXCOLOR_F66708,GUIDRV_FLEXCO

21、LOR_M16C0B16);咱们需要修改的是 GUIDRV_FLEXCOLOR_F66708 那个参数。GUIDRV_FLEXCOLOR_F66708那个参数的修改要依照你的 TFT 屏所利用的驱动芯片,如我的 TFT 利用的驱动芯片是“ILI9325”,因此 GUIDRV_FLEXCOLOR_F66708。若是你的是“ILI9341”,那么就改成 GUIDRV_FLEXCOLOR_F66709。若是是其它型号的驱动芯片 那么需要查询 的用户手册然后进行修改。 用户手册可在“STemWinLibrary532”文件夹中的“STemWinLibrary532Documentation”目录下找到,该手册是一份 PDF 文档, .

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1