zhengxk-344971 发表于 2019-7-8 17:12:25

STemWin+FreeRTOS在任务优先级低的任务中显示字符串等语句均...

本帖最后由 zhengxk-344971 于 2019-7-8 17:14 编辑

最近用STemWin+FreeRTOS开发项目,在STM32F1上执行,采用外接12864OLED屏,用Cube建立工程,建立一个任务并成功打印字符串、汉字显示等,如果显示任务优先级最高,可以正常显示。但是如果在工程中增加一个任务,任务优先级如果与这个显示任务优先级相同或更高,则这个显示任务就不向液晶屏输出内容,哪怕增加的任务什么都不执行,且将任务内的delay时间设置很长。液晶屏采用驱动是LCDConf_Lin_Template.c。其他设置都试过,只与显示任务优先级有关,请教大神是何原因?
如果在执行完显示字符串命令后延时2秒钟,再在这个任务中创建窗口,则窗口能正常显示,前面的两秒钟液晶屏无显示。

lebment 发表于 2019-7-9 08:59:59

STemwin要设置为多任务,任务个数,参考安富莱教程可以设置,我记得是在cong。h

zhengxk-344971 发表于 2019-7-9 15:17:29

lebment 发表于 2019-7-9 08:59
STemwin要设置为多任务,任务个数,参考安富莱教程可以设置,我记得是在cong。h ...

你说的那个是在早期版本里面GUIConf.h文件里面有关于使用多任务调用STemWin的任务数设置:
#define GUI_MAX_TASK 5 // Max. number of tasks that may call emWin
现在改成GUIConf.c文件里面初始化设置:
GUITASK_SetMaxTask(3);
这句话的意思是可以有最多三个任务调用emWin的函数。
我的程序里面设置的是3,但是我实际应用是在一个任务里面管理emWin,其他任务不调用显示,按理说不应该有影响啊?!

zhengxk-344971 发表于 2019-7-9 15:27:00

lebment 发表于 2019-7-9 08:59
STemwin要设置为多任务,任务个数,参考安富莱教程可以设置,我记得是在cong。h ...

感谢提醒!我把GUITASK_SetMaxTask(3)改为GUITASK_SetMaxTask(1)就可以正常显示了。
我以前也注意到这个地方了,感觉调用任务设置为3肯定没有问题,设置多一些不是更好吗?目前虽然问题解决了,但仍然不知道为什么。

lebment 发表于 2019-7-10 21:17:20

zhengxk-344971 发表于 2019-7-9 15:27
感谢提醒!我把GUITASK_SetMaxTask(3)改为GUITASK_SetMaxTask(1)就可以正常显示了。
我以前也注意到这个 ...

我不清楚,说实话程序这种东西,只能靠自己解决

zhengxk-344971 发表于 2019-7-11 16:41:04

lebment 发表于 2019-7-10 21:17
我不清楚,说实话程序这种东西,只能靠自己解决

关键STemWin不提供源码,很多问题看不到也调不了,只能试着用,不方便。
页: [1]
查看完整版本: STemWin+FreeRTOS在任务优先级低的任务中显示字符串等语句均...