由于上一个标题的界面是自己一个一个点打到屏幕上去的,核算进程适当厌恶,所以这两天赶忙弄了一下μCGUI,期望对后边的人机交互界面的规划有所协助。
说实话,我关于人机交互界面的规划诚心没什么的创意,前次赵颖教师就含蓄的表达了这个意思,我也深入的认识到了这个问题,便是规划的界面适当一般,没有给人一种眼前一亮的感觉。
首要感谢队友王绥学给我供给的材料,由于自己电脑运转各种大型软件实在是太卡,所以这个暑假把女朋友电脑留下,不过材料都在别的一台电脑中,需求的材料就给队友要,非常的感谢啊!
依照教程一步一步的做下来,前面几步关于GUI的参数设置没什么问题,无非是用到的功用将其参数置1,用不到的功用将其参数置0,可是在最终一步中,便是将自己的LCD底层驱动与μCGUI连接起来,这儿呈现了问题,开端的时分编译总是犯错,耗费了我一个上午的时刻啊,以为是新版别的keil不兼容形成的,然后从4.72版别直接降至3.8版别,可是又呈现了相同的问题,各种变量的undefined。下午到了实验室,开端仔细的阅览排查代码,然后总算一句话让我眼前一亮:#ifndef LCD_H……(各种参数界说) #endif。由于我自己的驱动文件中界说了一个LCD_H,所以形成上面的一部分代码在编译的时分就越过没有编译,才形成了各种参数的未界说,删除了LCD_H还有LCD_W之后,决断的经过了编译,然后下载之后在屏幕上看到了显现的内容。
接下来便是优化代码,由于μCGUI是一个通用的图形软件库,所以也就再所不免它还有可优化的当地,尤其是刷屏的速度上,如果是整屏改写的话,能够很显着的看出来进展,很慢。首要,是把自己驱动的TFT_Point()函数的代码直接仿制到μCGUI的画点函数中,由于如果是在μCGUI的画点函数中调用TFT_Point()的话,每一个点都会有一个入栈和出栈的时刻糟蹋,降低了屏幕的改写速度,相同的道理,把自己的读点的驱动函数代码也直接仿制曩昔,还有便是GUI_Fill之类的函数,由于这些函数是整块整块的在刷屏,可是μCGUI是一个点调用一个画点函数,这样每个点都要写相关的指令和坐标,很低效。直接把自己的代码中的Fill相关的代码仿制曩昔,写好开端坐标之后,就开端向屏幕的RAM中直接送数据,至于坐标的加1是屏幕的操控器主动完结的,这样也节省了时刻,完结了这些优化之后能够看到刷屏速度有了不少的进步。我用的是STM32F103RBT6作为主控芯片,它的最高主频是72M,是经过外部的8M经过锁相环9倍频到达的,我把它12倍频超频运转之后,能够看出刷屏速度有了适当显着的进步,所以,芯片的主频也是限制刷屏速度的重要要素,ARM M系列的芯片重要用于操控,而应用型的ARM A系列的主频能够到达更高,玩起屏幕应该会更爽,而这个系列的芯片应该才是我们所了解的ARM。
别的一个限制要素,FLASH的巨细,我的单片机只要128Kb的FLASH,一般来说这现已适当大了,可是今日显现位图的时分,先直接转化的时分,超越FLASH巨细,然后把图片缩小到50%,然后仍是没有编译经过,接着再缩小50%,编译经过,显现正常,尽管FLASH能够外部扩展,可是关于低主频的操控芯片来说,刷屏速度本来就现已够慢的了,还要花时刻去读取外部的FLASH,然后再显现,那种速度就可想而知了,前阵子申请到的STM32F407的芯片,是根据ARM Conterx M4的内核,里边自带了1M的FLASH,这个就适当牛逼了,玩起来GUI应该很爽,并且主频能够最高168M,比F103RBT6的两倍还要高,刷屏速度应该能够得到很大的提高,作用应该会更好。
前两天在正点原子的店里看到了一个7寸的电容屏,和我的单片机接口能够匹配的上,不过暂时没有买的计划,榜首没有那么多资金,要300多,第二,我的单片机主频有点低,玩大屏作用必定很不爽,带大屏就要高频的高档货才行,比及从教师那里拿到TQ2440的板子之后玩玩ARM,这个的主频到时分带屏幕应该不成问题了。
现在只看到了第7章,接着看,重头戏还在后边。