sledd 发表于 2011-11-11 12:02:59

请教在rt—thread系统中可以使用2个以上邮箱吗?

请教如何在rt—thread系统中使用2个以上邮箱?看rt_mb_send()及rt_mb_recv()函数的参数并不包括邮箱的名字,难道还需要新建邮箱控制块吗?盼望各位不吝赐教。

aozima 发表于 2011-11-11 12:18:48

用名称就不要控制块了?
也不用初始化(或是创建)?

sledd 发表于 2011-11-11 12:46:26

是这样,我想用2个邮箱,又重新建了一邮箱控制块及内存池:
static struct rt_mailbox mb1;
staticcharmb1_pool;       
并在rt_application_init()内初始化这个邮箱:
         rt_mb_init(&mb1,
        "mbt1",
        &mb1_pool,
        sizeof(mb1_pool)/4,
        RT_IPC_FLAG_FIFO);   
然后分别在中断和线程中使用rt_mb_send(&mb1,(rt_uint32_t)&Data)及rt_mb_recv(&mb1,(rt_uint32_t*)&strr,RT_WAITING_FOREVER)发送和接收邮件,但是在编译时出现错误:
.\obj\rtthread-stm32.axf: Error: L6218E: Undefined symbol mb1 (referred from stm32f10x_it.o).

请问应该还需要修改哪里?

多谢aozima这么快回复。

zzm24 发表于 2011-11-11 12:50:51

回复【2楼】sledd
-----------------------------------------------------------------------
楼主杯具了.你在application.c用了static修饰struct rt_mailbox mb1,还想在stm32f10x_it.c使用mb1?

sledd 发表于 2011-11-11 14:08:36

请问那应该怎么做,有点迷茫。

zzm24 发表于 2011-11-11 14:40:07

回复【4楼】sledd
请问那应该怎么做,有点迷茫。
-----------------------------------------------------------------------
敬请sledd查找C语言中static的作用.

biansf2001 发表于 2011-11-11 15:41:36

static修饰后,只能在本文件内使用

sledd 发表于 2011-11-11 16:19:30

多谢几位了,去掉static,应该是可以了。还有点别的问题,再研究。基础不扎实,见笑。

xoolhaha 发表于 2011-11-11 23:51:22

C语言要加强啊。。。

aureoleday 发表于 2011-11-18 21:37:03

新手问题哈,我以前老搞不懂extern一样,呵呵。
其实错多了自然就好了
页: [1]
查看完整版本: 请教在rt—thread系统中可以使用2个以上邮箱吗?