用邮箱发送消息的问题,请大虾们指教
我现在用RTT建立两个任务,其中任务1发送邮箱,任务2接收邮箱,用以传递消息,可是任务1发送消息后,任务2开始接收消息并调用rt_mb_recv函数,当程序执行到“++mb->out_offset;”时,程序就会跳转到“MRS r0, psp; get fault thread stack pointer”;这个让我不是太清楚了,mb->out_offset就是加1,为何会提示获取栈指针出错?请各位老大们指点一二!! 可能指针变量没有分配地址,此时mb的值是多少? 神啊,我以为是ucos呢,跑进来一看,原来是这个系统,没用过,飘过。 因为我看ucos的应用中有使用邮箱传输数据,而我要传送的数据也只有4个字节,所以rt_mb_recv (rt_mailbox_t mb, rt_uint32_t* value, rt_int32_t timeout)中value变量放置的是要传送的数据变量的地址,rt_mailbox_t Charge_Message_MB=RT_NULL;
Charge_Message_MB = rt_mb_create("Charge_Message_MB",1,RT_IPC_FLAG_FIFO);
任务1:
uint32 BAT_Message;
rt_mb_send(Charge_Message_MB,BAT_Message);
任务2:
uint32 charge_current=0;
rt_mb_recv(Charge_Message_MB,&charge_current,RT_WAITING_FOREVER); 跑飞了就会hard fault
教程里有一个关于使用邮箱的例程,你可以对照着看看。 你是进入fault了吧
页:
[1]