硬汉嵌入式论坛

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

[μCOS-III] 关于ucos3和emwin之间传递消息的疑问

[复制链接]

23

主题

211

回帖

280

积分

高级会员

积分
280
发表于 2017-7-2 00:22:28 | 显示全部楼层 |阅读模式
Eric,你好,目前在调试emwin+ucos的时候碰到一些问题,麻烦您帮我分析以下,谢谢。

1. 在例程“V6-631_uCOS-III实验_uCOS-III+STemWin+FatFS综合”中,我看到emwin的任务是这样调用的:[blockquote]
void app_task_GUI(void)
{
  for(;;)
  {
    MainTask();
  }
}[/blockquote]
这样的话,就没法在ucos的任务里pend消息,所以我尝试把MainTask.c里的所有代码,插入到GUI任务所在的文件里,编译通过,但是下载之后运行,是黑屏,应该是emwin的消息机制出错了,请问这是什么原因啊?

2. 在MainTask.c里的while(1)主循环中,我尝试使用OSTaskQPost函数给其他任务发送消息,成功了,请问这样是不是正确的做法?
3. 我怎么从其他任务里给emwin所在任务发送消息?因为我不知道应该在哪里去pend。
4. 编译器警告,我使用的是例程里带的ucos3和emwin版本,IDE为IAR8.11,在编译时会出现这两个警告

Warning[Lt009]: Inconsistent wchar_t size
            GUI_PID.o(STemWin528_CM4_OS_IAR_ot.a) and 292 other objects have wchar_t size 16 bits
            aet_offset.o and 224 other objects have wchar_t size 32 bits
Warning[Lt049]: Potential floating point parameter passing conflict. The first module below references the second and they have been built with different  
settings.
            AAPCS, VFP variant: MainTask.o
            AAPCS, base variant: FRAMEWIN_CreateIndirect.o(STemWin528_CM4_OS_IAR_ot.a)
请问有什么办法能够消除掉?
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
 楼主| 发表于 2017-7-3 00:53:29 | 显示全部楼层
问题3解决了,原来在emwin的循环中也是可以使用pend函数来等待消息,只不过设置为等待超时,不要一直等待即可。
其他几个问题还请版主帮忙解释以下,非常感谢。

还有就是我看emwin主要是调用了图形库的STemWin528_CM4_OS_IAR_ot.a文件,如果我想升级emwin的版本,是不是直接替换这个.a文件就可以了?还是说把相应的GUI开头的文件夹里的文件全部更新?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2017-7-3 09:22:28 | 显示全部楼层
不好意思,楼主,现在才回复。

1. 楼主问题的1,2,3其实是一个问题,emWin要发送消息,直接在窗口或者对话框的回调函数里面搞,要接受消息的话,就通过emWin自己支持的消息机制,从其他的任务里面给emWin发,不需要用OS的消息机制,pend或者post。这样管理非常方便。

2. 第4个问题是不是因为你的IAR FPU功能没有开。看着不像。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2017-7-3 09:23:09 | 显示全部楼层

回 blackfire531 的帖子

blackfire531:问题3解决了,原来在emwin的循环中也是可以使用pend函数来等待消息,只不过设置为等待超时,不要一直等待即可。
其他几个问题还请版主帮忙解释以下,非常感谢。

还有就是我看emwin主要是调用了图形库的STemWin528_CM4_OS_IAR_ot.a文件,如果我想升级emwin的版本,是不是直接替换 .. (2017-07-03 00:53) 
是的,直接提供lib和所有头文件即可。
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
 楼主| 发表于 2017-7-3 15:27:58 | 显示全部楼层

回 eric2013 的帖子

eric2013:不好意思,楼主,现在才回复。

1. 楼主问题的1,2,3其实是一个问题,emWin要发送消息,直接在窗口或者对话框的回调函数里面搞,要接受消息的话,就通过emWin自己支持的消息机制,从其他的任务里面给emWin发,不需要用OS的消息机制,pend或者post。这样管理非常方便。

2. 第4个 .. (2017-07-03 09:22) 
感谢回复[s:151]
因为我需要传递数据来更新界面显示的数据,不需要使用ucos的消息机制,只要使用emwin的消息发送就可以么?
问题4好像不是这个原因,iAR设置里开启了了Fpu,创建GUI任务的时候也带上了使用Fpu的选项,很奇怪为啥警告,但是运行起来似乎没有问题。
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
 楼主| 发表于 2017-7-3 23:09:42 | 显示全部楼层
在st官网上下载了最新的5.32版本stemwin,替换了.a文件和include,这些编译警告就消失了,估计是优化的问题把。
还有个问题,在segger上下载的emwin是5.40,st下载的stemwin只有5.32,两个可以混用不?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2017-7-4 09:08:31 | 显示全部楼层

回 blackfire531 的帖子

blackfire531:感谢回复[s:151]
因为我需要传递数据来更新界面显示的数据,不需要使用ucos的消息机制,只要使用emwin的消息发送就可以么?
问题4好像不是这个原因,iAR设置里开启了了Fpu,创建GUI任务的时候也带上了使用Fpu的选项,很奇怪为啥警告,但是运行起来似乎没有问题。 (2017-07-03 15:27) 
可以的。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2017-7-4 09:09:14 | 显示全部楼层

回 blackfire531 的帖子

blackfire531:在st官网上下载了最新的5.32版本stemwin,替换了.a文件和include,这些编译警告就消失了,估计是优化的问题把。
还有个问题,在segger上下载的emwin是5.40,st下载的stemwin只有5.32,两个可以混用不?
 (2017-07-03 23:09) 
SEGGER的,是用于电脑端的X86版本库,不能用于芯片上的。
回复

使用道具 举报

23

主题

211

回帖

280

积分

高级会员

积分
280
 楼主| 发表于 2017-7-4 13:53:01 | 显示全部楼层

回 eric2013 的帖子

eric2013:SEGGER的,是用于电脑端的X86版本库,不能用于芯片上的。 (2017-07-04 09:09) 
了解,谢谢了[s:151]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 21:40 , Processed in 0.297745 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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