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

[STM32H735G-DK评测]六、Coremark跑分结果显示在LCD

[复制链接]
patch1582 发布时间:2026-10-4 16:39

此前已经进行了Coremark跑分测试,也完成了touchGFX Textarea显示字符。

现在将Coremark跑分结果显示在touchGFX Textarea中。

Coremark跑分结果有将近20行,在横屏的情况下不能完全显示。因此需要将其改为竖屏。

先说一个错误的测试。在cubeMX中横屏的参数设置是Width = 480,Hight = 272。

最初的想法是既然改为竖屏那么就将Width = 272,Hight = 480。这种方法是行不通的。

正确且简单的做法是在touchGFX->Config->Display->display Orientation中点击竖屏,就行word中的横向页面变纵向页面。

image.png

此时,在Canvas中画布就变为纵向。这样就可以愉快的纵向显示字符了。

在工程中如前例所示,引入Coremark的文件,更改stack = 0x4000。首先测试其能正常跑起来,能够从串口打印跑分结果。考虑到Coremark的结果是以printf()输出且数量巨大,一个一个将同时显示到LCD的text中有些麻烦。简便的方法是在fputc()中实现。具体如下,先判读一个printf()结束,行号自加1,大于设定行号清零。

int fputc(int ch, FILE *f)

{

volatile uint32_t guard = 0;

while (!LL_USART_IsActiveFlag_TXE(USART3))

{

if (++guard > 1000000) break;

}

LL_USART_TransmitData8(USART3, (uint8_t)ch);

if (ch == '\n' || ch == '\r')

{

lcdLines[lcdWriteIdx][lcdMsgLen] = 0;

lcdWriteIdx = (lcdWriteIdx + 1) % LCD_LINE_NUM;

if (lcdLineCnt < LCD_LINE_NUM) lcdLineCnt++;

lcdMsgLen = 0;

lcdLineNew = 1;

}

else

{

if (lcdMsgLen < LCD_MSG_MAX - 1)

lcdLines[lcdWriteIdx][lcdMsgLen++] = (char)ch;

else

lcdMsgLen = 0;

}

return ch;

}

LCD显示代码如下,利用软件实现环形缓冲区,将字符写入LCD。写入时需要检测换行标志

void screenView::handleTickEvent()

{

extern volatile char lcdLines[][60];

extern volatile uint8_t lcdLineNew, lcdWriteIdx, lcdLineCnt;

if (lcdLineNew) {

lcdLineNew = 0;

static touchgfx::Unicode::UnicodeChar displayBuf[50 * 60 + 50];

uint16_t pos = 0;

int start = ((int)lcdWriteIdx - lcdLineCnt + LCD_LINE_NUM) % LCD_LINE_NUM;

for (uint8_t i = 0; i < lcdLineCnt; i++)

{

int idx = (start + i) % LCD_LINE_NUM;

if (i > 0) displayBuf[pos++] = '\n';

uint16_t j = 0;

while (lcdLines[idx][j] != 0 && pos < 50 * 60 + 49)

displayBuf[pos++] = (touchgfx::Unicode::UnicodeChar)lcdLines[idx][j++];

}

displayBuf[pos] = 0;

textArea1.setWildcard1(displayBuf);

textArea1.invalidate();

}

}

最终实现效果如下

image.png

赞 收藏 评论0 发布时间:2026-10-4 16:39

举报

0个回答

所属标签

ST中文论坛活动

即日起开启活动话题入口,之后的活动统一都放在此处,欢迎大家的加入!


最新内容

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版