龙空技术网

龙芯+RT-Thread+LVGL实战笔记(8)——加一个数码管动态显示

南耿先生 286

前言:

现在大家对“stm32移植rtthreadlvgl”大概比较关怀,同学们都想要学习一些“stm32移植rtthreadlvgl”的相关知识。那么小编也在网摘上搜集了一些关于“stm32移植rtthreadlvgl””的相关知识,希望朋友们能喜欢,同学们快快来了解一下吧!

过去的大半年时间,一直带着学生备战全国职业院校技能大赛“嵌入式系统应用开发”赛项。由于是首次参加该赛项,很多东西都是从0到1的摸索和积累。作为指导教师,备赛期间除了给予学生必要的指导,自己也花了不少精力研究了大赛指定的龙芯1B200嵌入式开发板,并尝试使用RT-Thread操作系统LVGL图形组件,实现了样题的几十项任务,大大小小的版本也写了30多个,也算磕出点名堂了,部分效果如图1所示。

图1 带两级任务按钮和部分功能(模拟驾驶舱)的效果

本着分享和开源精神,也为了给以后的参赛学生循序渐进的指导,于是就有了这个实战笔记系列。希望自己摸索的过程能给更多的嵌入式学习者一些指引,也为国产嵌入式处理器和国产嵌入式操作系统的推广助一点力。

由于个人能力和精力的限制,再加上龙芯嵌入式的开发资料十分有限,很多问题没法像STM32那样深入到库文件和寄存器的程度,还希望有见解的网友在这些问题上能给与点评和分享。最后,我想说的是,这个实战笔记不是面向0基础的朋友,起码得有龙芯嵌入式裸机的开发经验,了解RT-Thread操作系统的线程、定时器、信号量、邮箱等相关知识,知道LVGL图形用户界面开发的基本套路。

上一篇我们针对“子任务2.1”,完成了数码管显示工位号的静态效果,靠的是一个定时器每2ms刷新一位数码管实现的。这一篇我们继续利用这个定时器,实现数码管的动态显示,比如年份和日期交替显示,如图2所示。

图2 “子任务2.2”效果示意

一、准备工程和文件

还是老规矩,把上一版的工程目录复制另存一份,版本号为2.1,如图3所示,新功能就在新工程里添加,没有新增文件。

图3 复制另存一份新工程

二、编写源码

这个新任务的相关代码都补充在 task2.c 文件中,虽然增加了一个新任务,但不必为此增加新的线程或定时器,对现有定时器的代码修改一下即可。

2.1 补充几个段码组合

根据不同的显示内容,这里定义了几个宏来表示其段码组合,如代码清单1所示,这样可以简化后续相关函数的书写量。

代码清单1 补充的段码组合

2.2 定时器回调函数的修改

由于本任务与上一个任务只是显示内容不同,但定时刷新显示的基本套路是不变的,所以我们在定时器回调函数里加了一些逻辑判断,如代码清单2所示,这样就可以在一个定时器任务里区别两个子任务了。

代码清单2 修改后的定时器回调函数

2.3 任务2子线程入口函数的修改

区别子任务的判断我们已经放在定时器里了,因此这里就只管启动和退出定时器即可,如代码清单3所示。

代码清单3 修改后的任务2子线程入口函数

三、编译和测试

编译并下载程序后,其效果已在图2中示意,或点击【演示视频】。当然,在串口终端依然可以通过 list_thread 命令查看当前正在运行的线程。

(本文完)

标签: #stm32移植rtthreadlvgl