你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32U599】6.界面切换

[复制链接]
奇迹 发布时间:2024-1-1 10:37

很多时候,我们的设计不只有一个界面,有一个丝滑的界面切换,能给使用者的体验带来大幅度提升,今天我们就来把我们上几期做的界面给联系到一起。

启动TouchGFX,新建一个按键。

微信截图_20231230000334.png

创建一个Interactions,配置如截图

微信截图_20231230000354.png

另一个界面也是同样操作,就是把动画效果方向改为South。

打开VS,仿真看看。

bandicam2023-12-3000-06-29-347.gif

效果完美,把代码下载到单片机看看。

b72c4c362cfdfcd7666fc1e921ff3445.gif

嗯?我的动画效果呢?

经过摸索发现是因为没配置动画缓存的原因

这个动画缓存并不能在STM32cubeMX里面直接进行配置,需要在代码里面设置。最直接的函数就是TouchGFXGeneratedHAL.cpp里面的

{
  HALGPU2D::initialize(8192);
  registerEventListener(*(Application::getInstance()));
  setFrameBufferStartAddresses((void*)frameBuf, (void*)(frameBuf + sizeof(frameBuf) / (sizeof(uint32_t) * 2)), (void*)0);
}

这里面的setFrameBufferStartAddresses第三个参数就是动画缓存。不过很蛋疼的一点就是这个文件是被STM32cubeMX进行管理的,你改动的代码,重新生成又没了。

针对这个问题,TouchGFX在4.19.0里面加入了HAL::setAnimationStorage()函数。

微信截图_20231230001931.png

我们可以在TouchGFXHAL.cpp文件里面进行配置,这个文件是我们自己管理的,不用担心生成覆盖问题。

uint32_t animationBuf[(480 * 480 * 3 + 3) / 4] LOCATION_ATTRIBUTE("TouchGFX_Framebuffer");
void TouchGFXHAL::initialize()
{
  TouchGFXGeneratedHAL::initialize();
  setAnimationStorage(animationBuf);
  ....省略其他代码。
}

下载运行。

d2f9a438bd4ddb6e349a84b08b2864c0.gif

效果完美,收工。

收藏 评论1 发布时间:2024-1-1 10:37

举报

1个回答
STMCU-管管 回答时间:2024-1-2 08:41:49

显示很完美

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版