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

[STM32H735G-DK评测]五、接收串口字符并显示在LCD—text中

[复制链接]
patch1582 发布时间:2026-10-2 12:26

已经实现了,MCU发送字符到LCD显示。这一次实现接收uart3发来的字符并显示在LCD-Text中。

从Stm32H735 DK的图纸中可以看到uart3 PD8PD9链接到stlink上,并且能够被win识别为虚拟串口。

image.png

image.png

从cubeMX中定义uart3 PD8PD9并使能中断,波特率115200,8位数据位1位停止位

image.png

配置好参数后,需要先测试串口的收发,收发成功后,在接收字符并显示到LDC中

串口的发送可以有两种测试方法,

1是库函数,uint8_t pData[6] = {0x31,0x32,0x33,0x34,0x35,0x36}; HAL_UART_Transmit(&huart3, pData, 6, 20);

2是printf,printf("Hello %d\r\n", 123);

发送测试是为了检验串口硬件的连通性,成功后,再测试接收。

在MDK中进入debug模式,先将断点放在接收中断中。由pc端串口工具下发数据,若是能进入中断说明能够成功接收数据。

image.png

再将断点放在接收回调函数中,由pc端串口工具下发数据,若是能停在该断点,需要检查接收数组中的数据并与发送数据进行对比,两者一致的话说明能够成功接收数据。

image.png

下一步,就是将接收数据显示到LCD的text中,再main()函数中驱动LCD,

while (1)

{

HAL_LTDC_LineEventCallback(&hltdc);

MX_TouchGFX_Process();

HAL_Delay(16);

}

在handleTickEvent()中刷新并显示字符

void screenView::handleTickEvent()

{

extern volatile uint8_t uart3RxFlag;

extern uint8_t uart3RxBuf[];

extern volatile uint16_t uart3RxLen;

if (uart3RxFlag)

{

uart3RxFlag = 0;

static touchgfx::Unicode::UnicodeChar displayBuffer[64];

uint16_t i;

for (i = 0; i < uart3RxLen && i < 63; i++)

{

displayBuffer[i] = (touchgfx::Unicode::UnicodeChar)uart3RxBuf[i];

}

displayBuffer[i] = 0;

textArea1.setWildcard1(displayBuffer);

textArea1.invalidate();

}

}

最终显示效果如下

image.png

赞 收藏 评论0 发布时间:2026-10-2 12:26

举报

0个回答

所属标签

ST中文论坛活动

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


最新内容

相似技术帖

官网相关资源

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