硬汉嵌入式论坛

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

emwin 和 一起使用就进入hardfault

[复制链接]

3

主题

9

回帖

18

积分

新手上路

积分
18
发表于 2018-1-19 17:34:09 | 显示全部楼层 |阅读模式
1 ucosii 和emwin单独使用都没有没有问题,放在一起在GUI_Delay处进入hardfault错误,在工程下巴ucos系统换成FreeRTOS运行正常,请教一下这是什么原因?IAR环境
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107338
QQ
发表于 2018-1-20 00:03:40 | 显示全部楼层
出现这种情况的话,这样排查。
在你uCOS-II+emWin工程的main函数里面注释掉所有代码,在里面仅测试下emWin功能的正常性,这个通过后,然后就仅创建一个启动任务,在启动任务里面跑emWin看看。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2018-1-20 11:01:35 | 显示全部楼层
eric2013 发表于 2018-1-20 00:03
出现这种情况的话,这样排查。
在你uCOS-II+emWin工程的main函数里面注释掉所有代码,在里面仅测试下emWin ...

这种测试方法行不通,就算只运行emwin,只要进入GUI_Delay就进入hard_fault
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107338
QQ
发表于 2018-1-20 11:05:35 | 显示全部楼层
aven 发表于 2018-1-20 11:01
这种测试方法行不通,就算只运行emwin,只要进入GUI_Delay就进入hard_fault

那么问题来了,前面你说裸机可以使用,但是你在新建的emWin+uCOS-II中仅运行emWin却跑步起来,说明你的工程就有问题。这个才是这种测试的真正意义所在。

特别注意一点,你的emWin底层RTOS接口函数时间基准用裸机实现。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2018-1-20 11:32:46 | 显示全部楼层
本帖最后由 aven 于 2018-1-20 11:34 编辑
eric2013 发表于 2018-1-20 11:05
那么问题来了,前面你说裸机可以使用,但是你在新建的emWin+uCOS-II中仅运行emWin却跑步起来,说明你的工 ...

GUI_X_UCOS里的时间函数改为裸机方式后就正常了,这是什么原因,没明白
Z%DHDN2%_435[K%B2W7B0[3.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107338
QQ
发表于 2018-1-20 12:18:47 | 显示全部楼层
aven 发表于 2018-1-20 11:32
GUI_X_UCOS里的时间函数改为裸机方式后就正常了,这是什么原因,没明白

这个说明你的emWin是没问题的,然后可以开始第二步测试,仅创一个uCOS-II启动任务,在启动任务里面也不要跑emWin,测试uCOS-II是否有问题,然后加上emWin测试。
另外任务栈不要太小,当前测试先开个4KB使用。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2018-1-20 12:48:35 | 显示全部楼层
本帖最后由 aven 于 2018-1-20 13:10 编辑
eric2013 发表于 2018-1-20 12:18
这个说明你的emWin是没问题的,然后可以开始第二步测试,仅创一个uCOS-II启动任务,在启动任务里面也不要 ...

在启动任务里不做其他操作,直接调用延时函数会进入硬件错误,如果注释掉        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);        GUI_Init();                         
        WM_SetCreateFlags(WM_CF_MEMDEV);
        WM_MULTIBUF_Enable(1);  
的话,任务正常运行;不注释以上语句,在启动任务里创建两个led任务后挂起,led正常闪烁,程序正常运行,求解
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107338
QQ
发表于 2018-1-20 18:01:58 | 显示全部楼层
仅加上函数
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);        GUI_Init();  
是否正常,继续一步一步排查,看看是不是死在GUI_Init里面。还行搞不定的话,我已经无能为力,对比下我们F429的例子吧:

V6-821_uCOS-II实验_uCOS-II STemWin5.28 FatFS综合.rar (12.21 MB, 下载次数: 84)

ps:还有一种情况是你的uCOS-II解决好浮点问题了没,测试几个任务里面做个简单的浮点数乘除法,看看是不是也会硬件异常。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2018-1-20 19:17:13 | 显示全部楼层
本帖最后由 aven 于 2018-1-20 19:34 编辑
eric2013 发表于 2018-1-20 18:01
仅加上函数
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);        GUI_Init();  
是否正常,继 ...

emwin库换成你的5.28的就OK了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-27 02:14 , Processed in 0.285871 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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