硬汉嵌入式论坛

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

[emWin] 使用ST为STM32H7配套的emWin库,如果MDK开启的最高等级优化和时间优化,有几个函数会工作异常,特别注意

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-5-25 02:44:13 | 显示全部楼层 |阅读模式
下面的这几个库测了个遍,而使用MDK安装目录提供的库,解决了此问题。
QQ截图20180525024305.png
回复

使用道具 举报

36

主题

2050

回帖

2158

积分

至尊会员

积分
2158
发表于 2018-5-25 09:53:46 | 显示全部楼层
谢谢分享。
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

681

主题

3485

回帖

5553

积分

论坛元老

积分
5553
发表于 2018-6-7 15:31:22 | 显示全部楼层
你好,我使用的貌似就是你上面的那些库,工作貌似挺奇怪的

另外你说的 安装目录的库是下面的这个目录吗 ??

000000000.png


如果我的这个目录不对,请详细说一下安装目录的位置,多谢多谢了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
 楼主| 发表于 2018-6-7 19:39:24 | 显示全部楼层
hpdell 发表于 2018-6-7 15:31
你好,我使用的貌似就是你上面的那些库,工作貌似挺奇怪的

另外你说的 安装目录的库是下面的这个目录吗  ...

对就是这个,你用的M7的话,使用GUI_CM4F_L库就行。
回复

使用道具 举报

681

主题

3485

回帖

5553

积分

论坛元老

积分
5553
发表于 2018-6-7 20:32:00 | 显示全部楼层
eric2013 发表于 2018-6-7 19:39
对就是这个,你用的M7的话,使用GUI_CM4F_L库就行。

我已经把这个库文件拷贝到我的工程中测试了一下,还是会出现 更新显示没有反应的情况,但是程序是没有死机的,我在每个任务里面都打印信息出来都是正常的,而且

emwin 的定时器工作也是正常的,我就感觉很奇怪了啊,到底是怎么回事啊  ??

只中断优先级的问题吗 ?



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
 楼主| 发表于 2018-6-8 00:43:02 | 显示全部楼层
hpdell 发表于 2018-6-7 20:32
我已经把这个库文件拷贝到我的工程中测试了一下,还是会出现 更新显示没有反应的情况,但是程序是没有死 ...

你的SDRAM的MPU怎么配置的
回复

使用道具 举报

681

主题

3485

回帖

5553

积分

论坛元老

积分
5553
发表于 2018-6-8 11:02:27 | 显示全部楼层
eric2013 发表于 2018-6-8 00:43
你的SDRAM的MPU怎么配置的

  你好,能否把你测试好的 emwin 的版本发给我一下啊 ?

我估计应该还是我的 emwin 版本不行,不知道为何,使用 emwin v5.32 版本的死活都不会假死

mpu 配置如下:

{
    MPU_Region_InitTypeDef MPU_InitStruct;

    // Disable the MPU
    HAL_MPU_Disable();

    // Configure the MPU attributes as WT for SRAM
    MPU_InitStruct.Enable = MPU_REGION_ENABLE;
    MPU_InitStruct.BaseAddress = 0xC0000000;
    MPU_InitStruct.Size = MPU_REGION_SIZE_64MB;
    MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
    MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;
    MPU_InitStruct.IsCacheable = MPU_ACCESS_CACHEABLE;
    MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
    MPU_InitStruct.Number = MPU_REGION_NUMBER1;
    MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
    MPU_InitStruct.SubRegionDisable = 0x00;
    MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;

    HAL_MPU_ConfigRegion(&MPU_InitStruct);

    // Enable the MPU
    HAL_MPU_Enable(MPU_PRIVILEGED_DEFAULT);  
  }

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
 楼主| 发表于 2018-6-8 14:16:26 | 显示全部楼层
hpdell 发表于 2018-6-8 11:02
你好,能否把你测试好的 emwin 的版本发给我一下啊 ?

我估计应该还是我的 emwin 版本不行,不知道 ...

好的,我这就整理下上传给你,基于V6的。
回复

使用道具 举报

681

主题

3485

回帖

5553

积分

论坛元老

积分
5553
发表于 2018-6-8 14:19:04 | 显示全部楼层
eric2013 发表于 2018-6-8 14:16
好的,我这就整理下上传给你,基于V6的。

多谢多谢啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
 楼主| 发表于 2018-6-8 15:29:30 | 显示全部楼层

V6-914_STemWin提高篇实验_万年历(uCOS-III).7z (7.35 MB, 下载次数: 35)
回复

使用道具 举报

681

主题

3485

回帖

5553

积分

论坛元老

积分
5553
发表于 2018-6-8 17:20:45 | 显示全部楼层

多谢了啊,立马收藏
回复

使用道具 举报

681

主题

3485

回帖

5553

积分

论坛元老

积分
5553
发表于 2018-6-9 13:25:09 | 显示全部楼层
本帖最后由 hpdell 于 2018-6-9 17:31 编辑

你好,我试过了貌似可以了


另外我在运行 emwin 的任务循环里面貌似只能使用 GUI_Delay(10) 这个函数进行任务切换。而使用 vTaskDelay(10) 这个延时在 emwin 的任务里面貌似不能够进行任务切换,这种情况是否正常啊??????????
其他任务里面可以使用 vTaskDelay(10);  这个任务延时是没有问题的

现在 可以把 gui 的任务设置为最低优先级也可以运行了,如果在其他任务里面 使用 GUI_Delay 昨为任务切换的话, 那么 gui 任务的优先级不能够低于 其他任务的优先级,请问这
个现象是合理的吗  ??????
还有就是秒针 走动时,貌似有时会 向前多跳一秒,比如,秒针运行到了 25秒处时(正常应该是 调到 26秒),但是他直接就调到了 27秒处,请问这个问题是什么原因造成的啊 ?
我测试过我刷新表盘及时间的总时间大概为 60ms 左右,另外也没有其他多余的任务在运行了
我目前使用 的 FreeRTOS 版本为 v9.00










回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-16 23:08 , Processed in 0.297632 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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