STM32 FreeRTOS + FATFS + EMWIN移植及测试

所需积分/C币:33 2017-11-16 16:07:54 1.18MB PDF
86
收藏 收藏
举报

一、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进行修改

...展开详情
试读 9P STM32 FreeRTOS + FATFS + EMWIN移植及测试
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
梧桐絮 内容不错,值得学习。Fighting。
2020-04-02
回复
lejing123 还好,需要的资料
2018-08-28
回复
luokui111 没仔细看,居然是pdf
2018-02-08
回复
上传资源赚积分or赚钱
    最新推荐
    STM32 FreeRTOS + FATFS + EMWIN移植及测试 33积分/C币 立即下载
    1/9
    STM32 FreeRTOS + FATFS + EMWIN移植及测试第1页
    STM32 FreeRTOS + FATFS + EMWIN移植及测试第2页

    试读结束, 可继续读1页

    33积分/C币 立即下载 >