硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1363|回复: 17
收起左侧

[μCOS-III] STM32H743 HAL1.9.0 移植ucosIII 3.08.01 + STemwin5.44 Y左边最大仅223,拜谢,求解?

[复制链接]

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2022-2-8 11:12:31 | 显示全部楼层 |阅读模式
本帖最后由 shaohua824 于 2022-2-8 11:18 编辑

描述:目的:移植 STM32H743 HAL1.9.0 移植ucosIII 3.08.01 + STemwin5.44(采用硬汉模板,因IO等接口不同,重新参考从0移植)
遇到问题:整个移植过程整体顺利,移植完成后显示界面如下
微信图片_20220208103101.jpg
经查找:在 LCDConf_Lin_Template.c文件中的函数 _LCD_FillRect()多次运行中出现 y1 值被裁剪掉高8位(479十六进制0x1DF,输入到此函数时变成0xDF即223)
直接使用_LCD_FillRect()进行画框正常
在该函数中,打印输出如下
1.png
串口显示如下:
2.png
3次输出应是对应 3条红线处,
3.png
注释掉后输出
4.png
多次查找均未找到原因,使用GUI_Clear()函数然后仿真后进入函数LCD_FillRect
5.png
进入此函数内部后,在此步骤变成0xDF
6.png
当使用 _LCD_FillRect() 函数时执行的是自己重定义的函数,无上述问题,但在程序中LCD_X_Config()函数内已经重定义了函数
7.png

请各位大神看看


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-2-8 11:22:19 | 显示全部楼层
你的裸机显示一样正常了吧,正常的话,然后就是你的颜色格式和emWin的颜色格式可以正常匹配吧。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-8 11:32:55 | 显示全部楼层
eric2013 发表于 2022-2-8 11:22
你的裸机显示一样正常了吧,正常的话,然后就是你的颜色格式和emWin的颜色格式可以正常匹配吧。

我是先移植的系统再移植的emwin,单独LTDC颜色背景颜色显示正确。颜色格式正确,都是ARGB888,使用_LCD_FillRect和系统GUI_Clear(); 颜色都是对的上的,红绿蓝都正确,只是缺半屏,实际显示范围是800*223(0x31F,0x1DF(这个1DF变成DF),仿真看过)
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-8 12:21:21 | 显示全部楼层
不使用操作系统,裸机显示也是一样效果
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-2-8 16:03:29 | 显示全部楼层
shaohua824 发表于 2022-2-8 12:21
不使用操作系统,裸机显示也是一样效果

方便的,分享你的工程代码到百度云,我试试。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-8 17:54:45 | 显示全部楼层
eric2013 发表于 2022-2-8 16:03
方便的,分享你的工程代码到百度云,我试试。

百度云:链接:https://pan.baidu.com/s/15bkkA68aGZ0LXjHu0tOUyw
提取码:mwgi

另外说明,硬件无问题,之前使用ThreadX+GUIX已经正常使用。在同样的硬件平台下移植ucosIII 3.08.01 + STemwin5.44(另外试过freertos+STemwin5.44,同样出现这样的问题,移植过程参考了官方及硬汉您的网站资源模板。底层LTDC和SDRAM 的IO 和V7板子不同)模板裸机是使用cubeMX生成的,HAL时间基准 改TIM6,15优先级。SysTick 也是15
下面仿真查到的情况,下面两张都是仿真
第一张是在 GUI_Clear();加入断点,进入查看,执行到中间横线时 R1 R2 可以看到,应该是尺寸。
10.png

下面一张是进入LCD_FillRect
在 0x080051B4 F9B4500E  LDRSH         r5,[r4,#0x0E] 执行这一行后 R5值为0XDF,此时如果把R5值改成 0x1DF则可以正常清屏
但GUI_DispStringAt("Draw Panel", 100, 400); 在超出233范围外同样不显示。除了直接使用重定义的_LCD_FillRect可以画范围外,其他均不行,是不是还要有其他的函数要定义。我记得早版本的有画点,划线,都要定义的

11.png

回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-8 18:01:27 | 显示全部楼层
eric2013 发表于 2022-2-8 16:03
方便的,分享你的工程代码到百度云,我试试。

已回复,但未看到。
重发分享的连接
链接:https://pan.baidu.com/s/1hJQILcIvwblclbgR09c_Pw
提取码:25od
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-2-9 10:02:06 | 显示全部楼层
1、改成成16bit测试,你的底层和emWin都修改下,也就是RGB565试试。
2、然后如果开了DMA2D和LTDC的中断,将中断函数开启注释掉。
3、

QQ截图20220209100151.png
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-9 10:49:24 | 显示全部楼层
eric2013 发表于 2022-2-9 10:02
1、改成成16bit测试,你的底层和emWin都修改下,也就是RGB565试试。
2、然后如果开了DMA2D和LTDC的中断, ...

1、设置模式RGB565
2、关闭LTDC中断,DMA2D设置565格式
3、关闭缓冲设置和函数重定义
结果和以前相同。
a、函数重定义使用和不使用结果一样
b、缓冲是否使用也是
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-2-9 10:54:01 | 显示全部楼层
shaohua824 发表于 2022-2-9 10:49
1、设置模式RGB565
2、关闭LTDC中断,DMA2D设置565格式
3、关闭缓冲设置和函数重定义

那你的LTDC驱动代码貌似有问题,不是使用emWin,仅显示LTDC的背景层,看看正常不,然后仅显示一个图层,看看正常不
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-9 14:59:56 | 显示全部楼层
eric2013 发表于 2022-2-9 10:54
那你的LTDC驱动代码貌似有问题,不是使用emWin,仅显示LTDC的背景层,看看正常不,然后仅显示一个图层, ...

不使用emWin,单独LTDC 背景层和使用layer0,都是正常的,使用的是 ThreadX+GUIX中的LTDC_Fill函数刷图层 是可以正常刷屏和刷色块的。只要打开emwin就还是半屏。(RGB565和RGB888都试过,单独都行,使用emwin都不行)
回复

使用道具 举报

7

主题

108

回帖

129

积分

初级会员

积分
129
发表于 2022-2-9 18:00:44 | 显示全部楼层
蹲个后续 哈哈哈
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-10 09:15:58 | 显示全部楼层
大概知道哪里情况了,使用内部SRAM,就可以,应该是这一部分。从之前debug情况也是指向这个方向。再查一下
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-10 10:49:09 | 显示全部楼层
问题已解决,修改情况如下
1、修改GUIConf.c 文件如下。参考官方文件:\STM32Cube_FW_H7_V1.9.0\Projects\STM32H743I-EVAL\Applications\STemWin\STemWin_HelloWorld\STemWin\Target\GUIConf_stm32h743i_eval.c
2.10.png 2、另根据STemwin官方手册5.44 和segger emwin手册6.24(UM03001 Date: January 18, 2022)两个文件中的Configuration 一章。
删除 GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE)。使用不使用均无影响,手册上无此函数。遂删除。
6.24.png
5.44.png
3、修改MPU配置,如下图,原因未细查,有空再说(有大神可以指教下~)
2.10.1.png


至此已解决本帖所遇问题,待有空重新整理记录笔记
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-10 10:53:39 | 显示全部楼层
同时感谢,硬汉哥,百忙中还抽空回复。
祝新年愉快,恭喜发财。虎年如意。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2022-2-10 11:31:13 | 显示全部楼层
shaohua824 发表于 2022-2-10 10:49
问题已解决,修改情况如下
1、修改GUIConf.c 文件如下。参考官方文件:\STM32Cube_FW_H7_V1.9.0\Projects\ ...

你这问题的解决办法有点诡异。

不过解决了就好。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-10 15:11:11 | 显示全部楼层
eric2013 发表于 2022-2-10 11:31
你这问题的解决办法有点诡异。

不过解决了就好。

哈哈哈,先不管这些了,先解决。后面有时间再慢慢研究
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
 楼主| 发表于 2022-2-22 18:45:43 | 显示全部楼层
兜兜转转,来对之前BUG做个简要说明(想骂人),避免后人踏同样的坑
SDRAM的D31引脚虚焊,导致该位始终为低,测试SDRAM时使用的是4字节,测试的值刚好避开该位,今日突发兴趣,测了一下1字节0xff读写,才发现了该问题,重焊之后,然后将之前出现的连环问题再次排查一下,发现问题全无。本来2天可以搞定的,对着各种手册从头看起做了三四遍。浪费了很多天。唉 嘚嘚以嘚嘚 造孽啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 19:33 , Processed in 0.216374 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表