环境:STM32F429+FreeRTOS+TouhGFX
问题描述:用TouhGFX做了个界面,现在界面显示,跳转,动画都没有问题,但是在View写的handleTickEvent()函数不会自动触发,我在里面写的界面显示更新代码不会执行
补充:单步调试发现,刚进入界面时,会调用几次handleTickEvent(),之后就不调用了;
另外,我按下外部的物理按键时,发现这个handleTickEvent又会被调用了,不按的话就不调了。按下按键时候,其他线程会给GUI线程发消息队列,model.cpp的tick函数里有消息接收和处理
我个人怀疑 会不会和FreeRTOS的调度配置有关,还是TouhGFX哪里没配置对,希望有大佬能帮忙看看,给点解决思路,谢谢!
部分代码如下:
model.cpp 文件
void Model::tick()
{
model_tick++;
if((model_tick % 30) == 0)
{
//接收处理其他线程的消息
if (xQueueReceive(GUIMsgHandle,(void *)&tmp_rx, portMAX_DELAY) == pdPASS) //接收消息队列
{
//转到当前界面处理
modelListener->vGui_KeyManager();
}
}
}
screenView.cpp
void screenView::handleTickEvent()
{
tick_count++;
if((tick_count % 25) == 0)
{
vPopUps_CursorBlink();
}
}
screenView.hpp
...
public:
...
virtual void handleTickEvent();
protected:
uint32_t tick_count;
...
|