STM32f407ZGT6 HAL + ili9341 + FreeRTOS + emWin5.44移植
- 软件下载
首先去st官网下载好stm32cubemx,我是v5.5.0版的 - 打开软件选择芯片、开启时钟这些就不细说了。直接上FSMC的配置,每个人的板子不同,请根据自己板子原理图进行配置
注意看红色方框中的引脚,配置的时候需要对应
根据原理图对应选择NE4、LCD interface、A6、16bits,再把PC0引脚选择为GPIO_INPUT就行了。nor timing的3个参数先不设置,代码生成之后再修改。 - 在stm32cubemx中将crc打钩,在中间件中选择FREERTOS,将interface选择为CMSIS_V1
- 在stm32cubemx的project manager中将MDK-ARM选择为V5.27,将Firmware Package Name and Version选择为F4 V1.24.0。
- 最后点击GENERATE CODE生成代码即可。
- 用MDK打开生成的工程,在main.c文件中找到MX_FSMC_Init()函数,将timing的参数按如下修改:
- 我的TFT屏使用的是ili9341芯片,卖开发板的商家会提供驱动代码,找到代码加入到工程文件中去即可。
- C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_F4_V1.24.0\Middlewares\ST 这个路径下找到STemWin文件夹,将该文件夹中的config、inc、lib、os文件夹复制到工程文件夹下,比如:
在board中放入驱动代码和emwin的应用程序,比如
这里FramewinDLG.c是我用emwin 的builder程序生成的demo代码。
在工程目录的STemWin文件夹中粘贴刚才说到的几个文件夹,比如:
lib中只留一个STemWin_CM4_OS_wc16.a文件即可,其他的删除 - 修改驱动文件
ili9341.h头文件
注意好这里就行了,要根据自己板子的实际情况来算,然后检查一下头文件中LCD初始化的名字,我这里是用的原子的驱动,将初始化函数改个名就行,我改成了ILI93XX_LCD_Init。然后在ili9341.c文件中将初始化函数名改成对应的,原子的初始化函数中带有FSMC的配置,因为是使用stm32cubemx来初始化开发版,那么就不需要在ILI93XX_LCD_Init中初始化FSMC了,删掉那些代码即可,这里我把PC0进行了宏定义,LCD_RESET_GPIO_Port其实就是GPIOC,LCD_RESET_Pin就是GPIO_PIN_0,按自己板子实际情况改就行了。然后在ili93xx.c文件中加入stm32f4xx.h头文件 - 在GUIConf.h文件中将
#define GUI_OS (1)
#define GUI_SUPPORT_TOUCH (0)
#define GUI_SUPPORT_MOUSE (0)
其他不变
在GUIConf.c 中将#define GUI_NUMBYTES (50*1024) 这样修改,(50*1024)中的50按自己需求修改即可,记得加括号 - 将STemWin_CM4_OS_wc16.a设置为库文件,如图:
包含一下STemWin下的文件路径还有驱动文件board的路径,比如: - 我使用的是LCDConf_Flexcolor_Template.c这个文件,方式和使用Lin的不同,需要填充4个读写函数。
这2个宏是定义横竖屏的,根据自己屏的实际尺寸进行调整即可
这4个函数千万不能错。
红色方框的适用于ili9341芯片,其他芯片要看手册进行配置,这里 Config.Orientation =其实有4个宏定义,在GUI.h文件中,分别是GUI_ROTATION_0、GUI_ROTATION_CW、GUI_ROTATION_180、GUI_ROTATION_CCW,也是控制屏幕横竖、倒置显示的。
这里记得加入ili9341芯片的初始化函数,最后在LCDConf_Flexcolor_Template.c文件中加入#include "GUI.h"和#include "ili93xx.h"头文件即可。
13. 修改FramewinDLG.c文件
在文件末尾加入以下代码:
最后效果就是这样的,GUI已经开始工作了。祝大家移植成功。
如果还有人不会,那就下载我上传的代码吧,链接如下:
https://download.csdn.net/download/cp_srd/12152344