当系统时钟设置为 350MHz 时,我的 H750B-DK 板的屏幕每隔 12 秒就奇怪地闪烁一次。以前我在 400MHz 时第一次出现问题并且闪烁大约每 10 秒发生一次。在 480Mhz(最大)时,问题似乎消失了。
问题在实施新功能(包含所有 MQTT 发布消息功能的新类)后随机出现。我已经连接了一个类来访问滴答事件,但其中只有一个 if 语句,代码很少,而且它不是每 12 秒运行一次,而是在硬件事件发生时(MQTT 断开连接)运行,所以不是这样.
我还在我的主屏幕中使用了滴答事件,但只有一个空占位符 if 语句和另一个用于检查 FreeRTOS 队列数据的 if 语句(用于将错误代码从硬件发送到 TouchGFX 以供显示)。
我还没有使用自定义中断或定时器例程。这就是为什么我不知道这样的问题怎么突然突然出现(因为据我所知,我的代码大小根本不应该影响屏幕渲染,对吧?)。
我寻找了一些对 invalidate() 的不必要调用,但没有在计时器上调用 invalidate() (除了前面提到的那个 if 语句)。我所有的无效都发生在按下按钮时。
我宁愿找到这个问题的原因,也不愿使用 480MHz 祈祷问题不会再次出现,因为我正在开发此应用程序的大约 1/3,而且以最大频率出现的问题也将是灾难性的。
有谁知道这里可能出了什么问题?我宁愿避免在线发布我的整个项目,但如果某些文件有帮助,我可以发布它们。
附言。这可能是一个屏幕上同时有太多可绘制对象(甚至是不可见的)的问题吗?因为我计划在一些滑动容器的帮助下只使用一个屏幕来显示所有内容以简化我的工作(MQTT、CAN、SD 卡)。但是刚才我已经删除了两个我之前计划使用但放弃了这个想法的自定义容器,并且这个问题似乎在 400MHz 时消失了。是这个吗?我应该转向使用多个屏幕吗?
编辑:好的,所以我添加了可绘制对象,直到 RAM 无法再处理它,但即使在今天的 400MHz 下问题也没有返回,老实说这并不是很令人放心,因为问题的根源似乎神奇地消失了,因此可以随时返回。
无论如何,我已经开始投入一些时间来切换到 MVP 设计模式,因为我开始看到它如何有可能使我未来的工作更轻松,并使项目整体变得更好。
我仍然非常感谢任何对昨天可能出了什么问题的人有任何想法的任何意见。