STM32 FreeRTOS + FATFS + EMWIN移植及测试


-
一、FreeRTOS 移植 1、获取源代码 进入官网 http://www.freertos.org/ 下载源码,下图 1-1 是从官网下载到的源码目 录结构截图 图 1-1 2、建立工程所需的 FreeRTOS 源码目录 ⑴ 如图 1-2 是在图 1-1 中打开 FreeRTOS 目录的截图 图 1-2 ⑵ 将图 1-2 中 Source 目录下的所有文件复制到工程源码目录下如图 1-3 所示 图 1-3 ⑶ 打开图 1-3 中的 portable 目录,如下图 1-4 所示 图 1-4 ⑷ 根据处理器类型和编译环境保留 Common 和 MemMang 目录,以及相应目录下 的源码,对于其
#define ccr fieUSE PREEMPtio 欲算现T 柽方法(根拆所对应的FU行了相应优化) RITI- 企比方配打核大小12ste 名长度最大为16个宁节 #define ccr fieIDLE SHuLd 光为用一个仇先级是,mE应先山他优执行 ALTERNATIYE_API i is deprecate ard should not o= used in new desigrs #define ccr.fiENUM TIREAD _DCA STORAGE IOINtErS 不街月格期 t define ccr 过构动态分配功能unt8 t ucLear configMOIA:A_SIZE de土 ne ccr土igU&L_AHL⊥Iyt #de土 ne ccr土g出世上RAE_、_11_st C3-ruutinc ccfiniti 种ce三 ine configS, c0ROUm-亚 PEIORITIES(2 k Saf-ware time- definit. -ms, *+/ <c三 Inc cor王 igSE TIME 吏用软外定封器边 #Seine configIIIER TASE P3IORIT7 定时器服 的优先级与2 中Hmrc: IuirIgTTh可mmTH Ge=ine configlI长 TASE STACK DEPTH(cm-isN⊥AIA_E巴*2 l* Set the following definitions to 1 to inc_ude the API nction, or zero tc exc de the aPi functi0门.丰 物:3 uxTaskIriorit jet laskDele- CleanbpResources 3 Fastne INCLUDE_ laskDelayhtil ine INCLUDE_-laskDelay 图1-10 (3)在main函数中创建两个测试任务,并调用函数 vTask StartScheduler启动调度器 进行测试。 Fatfs移植 1、获取源代码 进入官网http:/elm-chan.org/fsw/ff/00indexe.html下载源码,如卜图2-1是从官 网下载的源码目录结构截图 document source 图2-1 2、建立工程所需的 FATFS源码目录 (1)如图2-2是在图2-1中打廾 source目录的截图,所有的程序源文件都存放在该 目录下 0Ohistory REadme disko diski ff ffsystem unicode InTeger 图2 (2)将图2-1中的所有文件都拷贝到工程源码目录下 3、将 FATES加入到工程中 (1)如下图2-3所示,在工程的根路径下建立组 FATES,以及在 FATFS组目录下建立 组Inc和组Src ■ FATFS SP 图2-3 (2)在工程中添加程序文件,如图2-4所示,将所有的h文件加入到组nc下,将所 有的c文件加入到Src下 早■FAT hi iis h t. h L diskin. c 图2-4 (3)如图2-5所示,在 FATES组下添加 disoio ext c文件,用于实现 FATES的磁盘接 口数 FATE }田国cl disk 图2-5 4、配置及测试 FATES 1)如下图2-6所示,在 diskin ext h中定义 disko接口函数结构,并在 diskin ext.c 文件中实现相应磁盘的驱动函数 /定以dki彐(驱动)函效结构 type def stru TSTATIIS (*dish USTAIUS (*dick status) aliz.(I ngicDisk Typ) RSL二(* write TR下sTT +1) (lsicDisl.Typ=, const 3YTE, DWDRD, LINT BYTE I Diskio Cryfunc 图2-6 (2)如下图2-7所示,在 diskin. c文件中实现U盘和 Flash的磁盘接冂函数类 disk initialize =u flash disk i: ai disk status =U Flash Disk statu U F1 图2-7 (3)如下图2-8所小,在相应的接口函数中调用步骤(2)中所定义的磁盘接口函数类 LST[Sick i =1s Pysical drive nmet tn identify the criva =y /* Physical cire ruber to identif, the drive + star =(D).)Di ski nTIT FIM disk_st a"us el. g'cTiskt/ pe)rdv otat-USAlUS liasolbriun disk_initialize(leLogiclicllype,. retun 3-at strr ia br t rard tata a y the drive t/ drEST disk, nst Br上*tt I'yTR PdTv, bl tt sart s=, IFESULT DiskioDwfun, diss prite(cgicDissypeiptrz, L:uf se return r Cont void tbuf- / Buffer t sendrecave comtrol cata t res-(DFESJLT)DiskiQD- iun, disk_icctL' (elagidDisk lyperdr, cid buff 图2-8 (4)在程序文件 ffcont h中对相关宏定义进行设置即可完成 FATES的配置 、 Emwin移植 1、获取源代码 由 J: Emwin不是开源免费软件,在木工程中采用的是 stEmwin,在st官网上搜索 stemwin即可下载,下图3-1为下载的源码目录结构截图 htmrasc Libraries Prcject Ut lities Release N 图3-1 2、健立⊥程所需的 EMWIN源码目录 (1)在工程的源码目录下建立如下图3-2所小的目求 图3-2 (2)如下图3-3所小为打开图3-1中的 Libraies目录后的截图 CMSIs STemWn STM32FOx STMEzFZx STM32Fx STM32F10 STM32F30 STM32L1x ihrary 5.7 _Str Perip x_Std Perip x_StdPerip x_ StdP h Driver h Driver h Driver h Driver h Driver h driver 图3-3 (3)如下图3-4所示为打开图3-3中的 STemwinlibrary532目录后的截图 Deci Lib Smulation Software Releast N 图3-4 (4)将图3-4中 Config、inc、0S目录下的所有文件拷贝到工程中的EMWN源码目录下 的对应的 Config、inc、0日录下 (5)根据处理器信号、编译环境、是否运行实时操作系统选择图3-4中的Lib目录下的 对应文件拷贝到工程中的 EMWIN源码目录下的对应Lib目录下,打井图3-4中的Lib目录后 的截图如下图所示 PD eil bothe o s emiwin5 5T0N0 CCaG 32 CMS 1 32 CM3 K 32 CMS O 32 CM3 O 32 CM3 C 32 CM4G 32 CM4 neue Sw 32 CMOG 32 CM01 32 CMOK 32 CM0O 32 CI ARa eil SGCC. a S_IAR. a S Keil Agreeme. Slemwin S IamIn S emWin slemwir Win Semir Slemwin Siam/in s emwin Slemwin Sherwin s ewing 32 CM41 32CM4I32CM4K 32 M4 32 CM4 32CM40 32 CM4 C 32 CM7G 32 CM7G 32 CM7I 32 CM7 I 32 CM7 A ota cil ot E GCC. a s Gcc ot S IARa S IAR Dt,o S Kcil ot CC.o STerrwir5 STeIr Mfir15 5 ST 2 M7K 32 CM7O 32 CM7o 32cM7 2-M732WN32 eil_ot S_GCc. a sGCc ot. SIAR. a S lAR_o a s Keil 6 Keil c 图3-5 3、将EMWN加入到工程中 (1)如下图3-6所小,在工程的根路径下建立组EMWN,以及在EMWN组目求下建立 与EMWN源码文件中所对应的日录的组 E□□ MIN ContIg + 图3 (2)如下图3-7所示,将 EMWIN源码文件中所有文件分别的添加到工程中的对应的组中 bG固 川C。nfh GUIDRY.c hLCDConf h FO 凵 L田口GU 图3-7 (3)如上图3-7所示,其中卜ont组下是用于为系统提供外部字体。如下图所示,本上程 中支持从外部 Flash读取字体和将字体固化到RO中的方法提供12*12和16*16的中文字体 的功能 口■Fart Efnnt1? F afont16 I qui_fo 山 qui tont e 图3-8 4、加入外部字库 (1)方法一:字库文件存放在外部 Flash中,从文件系统读取宁库文件中的字库数据, 本方案不适用于串行 Flash,因为会导致窗∏更新速度慢。因此,建议硬件使用并行Fash 来实现。具体步骤如下: 第一步:如下图3-9所示,实现读取xbf文件数据的函数,本函数会根据 fontType来读 取相应的字库文件中的字模数据 slatic int cetLate(sfoatI're fcntI'Te, U32 D=fsct, Ul6 ky-cthum oid *pcid, void xpBuf) (f: l-Peth, 0, sizeof cintf:fi: erath. s",IEF ALL- FONT12 XEF TAI T=TLM 图3-9 第二步:如下图3-10所示,调用上图3-9中的函数来实现读取不同字体数据的函数 static int Fo t12etData(032 offcet, ul6 byteNum, void xpO:d, vDid s*rBuf) rcturn rct offsct, u16 byte 图3-10 第三步:如下图3-11所示,调用函数 GUI XBF_ CreateFont创建相应的字体 ERF0N12=G叮MFCM2 第四步:如下图3-12所示,使用软件 fontcyst创建相应的.xbf字库文件,点击第四张 截图中菜单栏中的Fie下的 Save as为xbf格式 Font Cvt部 weire Fontlist 图3-12 第五步:将生成的xbf文件导入程序中所定义的文件系统中的相应路径下 (2)方法二:本方法是将字库以.c文件的形式固化到MCU的RM中。但是考虑到字库的 大小,因此,只能将部分字的字模数据加入到.c文件中。具体步骤如下: 第一步:如图312所示,使用软件 fontCyst米生成相应的.c文件,点击第四张截图 中菜单栏中的File下的 Save as为.c格式 第二步:如图3-13所示,复制.c文件最下方的字体结构定义到工程中相应字体的.c 文件中 of font ICeTon aerification 图3-13 第三步:如下图3-14所示,在相应的存储字符信息的结构体数组中添加我们工程中所 需的字符的数据 GIIT_ CONST_STORAGF (IIT CHARTNFOI GIT Fant_Fxt1?CharInfrLFON1 2.XT_.HAR_NIMM] Ⅱ i Font e C 6,5, 1, agGUI Font Ext-2 025/F ode 1 025*, 比xt2_0律0d006* aGUI Font Ext-2 2028 st code 002C t 4-∩∩ 图3-14 第四步:如下图3-15所示,在 EMWIN中是采用链表的方式对字符的字体数据进行管理。 因此,我们需要将工程中所需要的字符数据加入到链表。 U- CONST STORACE GUI_ FONT_ FROP GUI Fent Ext-2 Fropa tu:Infu[s8] /4 adress Tra 5/* roint Font Ex12 Chalnfo lc7]/x pointer tc nex GU CONsT_ STORA(E GUI_ FONT_ IFON GUI Fcnt Ext-2 Irop2 =[ +STIT Fnnt Fx117 Cha Tnfn[ 96]/* acdire3s haracter本 HUI Font Ex112 Pr]2s 2+ pointer tc next COFST_STORACE GUI_ FONT_ FFOP GUI_Fcnt_Ext-2_Fropl=[ Pro>2/* pointer tc next GUI FONT PROF + 图3-15 5、配置及测试EMWN (Ⅰ)如下图3-16所示,可根据相应LCD控制器的功能修改 GUIDRV.C文件中的函数,本 工程仅实现了最基本的两个函数 Set PixelIndex和 GetPixellndex tatic void -SetPixel Index U_ENICE+ pDeric=. in: x int v, int Fixell. dex !t i static unsigned int Gct yelr.dex fUl L/lCk pDevi:c. int x. irt ival Lily Vival . luL小i.p covert log: cal into ph/sica. coordinate nCx3)1DB)1010乐5= int pHys, phys IRRCR”-1)| CD PAT I?-1 USE PAFAGPDeric Nr1t into har'amae,..Adart:c yoursssten P rite i tu ler Inare dapt IJ y Jur sysLELl TPD by stonor 1x121e11033x1x nf(、ⅢRR=0①YEP=0:Lss=0 的影的米=06C)mK=0( CD SwAH XY=0 图3-16 (2)修改 GUIConfc和 GUIConfh中的宏定义对EMWN进行軋置 宏名称 说明 GUI NUMBYTES 给EMWN分配的内存大小 GUI NUM LAYERS EMW|N支持最人层数 OS SUPPORT 是否支持实时操作系统 GUI OS 编详时支持多任务 GUI MAXTASK GU|支持最大任务数 GUI SUPPORT TOUCH 是否支持触摸 GUI DEFAULT FONT 定义默认字体 GUI SUPPORT MOUSE 是否艾持鼠标 GUI WINSUPPORT 是否使用窗口管理器 GUI SUPPORT MEMDEV 是否使用存储设备 GUI SUPPORT DEVICES 是否使能指针输入设备 WIDGET USE FLEX SKIN 是否使能更换皮肤功能 GUL USE MEMDEV1 BPP FOR SCREEN要对色彩深度为1bpp的显示器启用存 储设备,该值应设为0,默认为1 (3)由于本工程采用的是 FreeRtoS操作系统,因此需要对Gu丨ⅹsS.c进行修改

-
2020-04-02
-
2018-08-28
-
2018-02-08
18.90MB
FreeRTOS+emWin 移植,裁剪和优化(STM32)
2019-03-18基于STM32,移植操作系统FreeRTOS 和 UI绘制emWin。裁剪相关信息,优化了UI绘制函数,将基于emwin的绘制效率大大提高。
STM32 FreeRTOS + FATFS + EMWIN移植及测试下载_course
2020-08-19一、FreeRTOS 移植 1、获取源代码 进入官网 http://www.freertos.org/ 下载源码,下图 1-1 是从官网下载到的源码目 录结构截图 图 1-1 2、建立工程所需的 Fr
6.87MB
FreeRTOS基于ram的FatFs
2016-07-13建立基于ram的FatFs,掉电丢失。并移植FreeRTOS
461KB
使用STM32Cube在STM32F7开发板上实现SD+Freertos+Fatfs
2018-06-11使用STM32Cube在STM32F7开发板上实现SD+Freertos+ Fatfs
29.22MB
stm32+rtos+fatfs+sd卡+u盘读写
2018-09-06实现sd卡读写,u盘读写
75.91MB
正点原子STM32F429 FreeRTOS+emWin+FATFS综合代码
2020-02-08正点原子阿波罗F429 FreeRTOS+emWin+FATFS综合代码,可实现截屏、中文输入法、文件系统、toggle按键UI界面。 代码效果展示图链接https://pan.baidu.com/s
17.39MB
STM32+FreeRTOS+UCGUI3.98+Fatfs开源综合程序
2014-10-21非常完整的有关FreeRTOS和uC/GUI3.98的移植及源码 另外uC/GUI3.98是当前能找到完整源码的最高版本,本人辛辛苦苦转了3天才弄完,很全,绝对对得起你的5分,网上iar的几乎找不到!
12.16MB
STM32_FreeRTOS+STemWin+FatFS+USB Host
2017-12-25DSP和标准外设库: 资源编号 : STSW-STM32065 资源名称 : STM32F4 DSP and standard peripherals library 文件名 : stm32_f105
使用STM32Cube在STM32F7开发板上实现SD+Freertos+Fatfs下载_course
2018-06-11使用STM32Cube在STM32F7开发板上实现SD+Freertos+ Fatfs 相关下载链接://download.csdn.net/download/wbgbg20002000/104715
111.65MB
DirectX修复工具V4.0增强版
2020-06-13DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复
23KB
自考项目论证与评估 --在线作业.docx
2020-07-15在线作业要求: 从一下题目中选择5道题目论述。 1. 结合实际项目案例,说明组织是如何开展项目论证与评估来支持决策的?开展了哪些具体方面的论证与评估? 2. 结合一个实际项目案例,对项目生命周期进行划
Java小白修炼手册
2019-12-28Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。 课程讲从零开始讲解Java 语言,小白快速入门学习的必修课!
68B
JAVA上百实例源码以及开源项目
2016-01-03百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,
企业员工角色权限管理平台(SpringBoot2.0+Mybatis+Shiro+Vue)
2019-08-07课程简介: 历经半个多月的时间,Debug亲自撸的 “企业员工角色权限管理平台” 终于完成了。正如字面意思,本课程讲解的是一个真正意义上的、企业级的项目实战,主要介绍了企业级应用系统中后端应用权限的管理,其中主要涵盖了六大核心业务模块、十几张数据库表。 其中的核心业务模块主要包括用户模块、部门模块、岗位模块、角色模块、菜单模块和系统日志模块;与此同时,Debug还亲自撸了额外的附属模块,包括字典管理模块、商品分类模块以及考勤管理模块等等,主要是为了更好地巩固相应的技术栈以及企业应用系统业务模块的开发流程! 核心技术栈列表: 值得介绍的是,本课程在技术栈层面涵盖了前端和后端的大部分常用技术,包括Spring Boot、Spring MVC、Mybatis、Mybatis-Plus、Shiro(身份认证与资源授权跟会话等等)、Spring AOP、防止XSS攻击、防止SQL注入攻击、过滤器Filter、验证码Kaptcha、热部署插件Devtools、POI、Vue、LayUI、ElementUI、JQuery、HTML、Bootstrap、Freemarker、一键打包部署运行工具Wagon等等,如下图所示: 课程内容与收益: 总的来说,本课程是一门具有很强实践性质的“项目实战”课程,即“企业应用员工角色权限管理平台”,主要介绍了当前企业级应用系统中员工、部门、岗位、角色、权限、菜单以及其他实体模块的管理;其中,还重点讲解了如何基于Shiro的资源授权实现员工-角色-操作权限、员工-角色-数据权限的管理;在课程的最后,还介绍了如何实现一键打包上传部署运行项目等等。如下图所示为本权限管理平台的数据库设计图: 以下为项目整体的运行效果截图: 值得一提的是,在本课程中,Debug也向各位小伙伴介绍了如何在企业级应用系统业务模块的开发中,前端到后端再到数据库,最后再到服务器的上线部署运行等流程,如下图所示:
-
下载
无线计算卸载的能量和时间优化
无线计算卸载的能量和时间优化
-
学院
access应用的3个开发实例
access应用的3个开发实例
-
博客
2021-02-25
2021-02-25
-
下载
用nodejs抓取-源码
用nodejs抓取-源码
-
博客
MacOS M1关于ltp(python)的使用
MacOS M1关于ltp(python)的使用
-
学院
龙芯实训平台应用实战(希云)
龙芯实训平台应用实战(希云)
-
下载
保真度与量子绝热演化之间的广义关系
保真度与量子绝热演化之间的广义关系
-
下载
第1关上 将错就错.mp4
第1关上 将错就错.mp4
-
博客
Java 类和对象
Java 类和对象
-
博客
测试图
测试图
-
下载
ASHRAE 2012 IT Equipment Thermal Management and Controls_V1.0.pdf
ASHRAE 2012 IT Equipment Thermal Management and Controls_V1.0.pdf
-
学院
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
学院
一天学完MySQL数据库
一天学完MySQL数据库
-
博客
计算机网络复习(第一天)-2
计算机网络复习(第一天)-2
-
学院
2021 PHP租车系统 毕业设计 毕设源码 源代码使用教程
2021 PHP租车系统 毕业设计 毕设源码 源代码使用教程
-
博客
axios控制台爆红问题Uncaught (in promise):xxx解决
axios控制台爆红问题Uncaught (in promise):xxx解决
-
下载
解决问题:这是解决问题的仓库-源码
解决问题:这是解决问题的仓库-源码
-
博客
部署docker
部署docker
-
学院
响应式编程入门与实战(Reactor、WebFlux、R2DBC)
响应式编程入门与实战(Reactor、WebFlux、R2DBC)
-
学院
C++11 14 17 20 多线程从原理到线程池实战
C++11 14 17 20 多线程从原理到线程池实战
-
博客
利用qt对数据库进行操作
利用qt对数据库进行操作
-
学院
用微服务spring cloud架构打造物联网云平台
用微服务spring cloud架构打造物联网云平台
-
下载
全局绝热搜索算法的电路模型
全局绝热搜索算法的电路模型
-
博客
JavaWeb之MVC三层架构
JavaWeb之MVC三层架构
-
学院
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
下载
使用容器的正确方式,Docker在雪球的技术实践
使用容器的正确方式,Docker在雪球的技术实践
-
博客
Java并发之CompletionService详解
Java并发之CompletionService详解
-
学院
使用 Linux 平台充当 Router 路由器
使用 Linux 平台充当 Router 路由器
-
学院
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
学院
SecureCRT 连接 GNS3/Linux 的安全精密工具
SecureCRT 连接 GNS3/Linux 的安全精密工具