snd_mbx関数について教えてください。
現在STM32F4にμC3/Compactを入れて開発をしております。
rcv_mbx関数を実施前の受信を待っているタスクがない状態でsnd_mbxを実施すると第2引数の
「T_MSG* pk_msg メールボックスへ送信するメッセージパケットの先頭番地」
ここの番地の先頭4バイトが0になってしまいます。
例えば
typedef struct MSG{
int a;
int b;
}_MSG;
_MSG msg;
msg.a = 1234;
msg.b = 5678;
snd_mbx(MSG_ID,(T_MSG*)msg);
とrcv_mbxを実行前に行うと msg.a が0になってしまいます。
そしてその後、rcv_mbxを実行するとこのデータを受け取れるのですが、msg.a = 0;msg.b = 5678;
となります。
これは使い方として、rcv_mbxの前にsnd_mbxを実行してはいけないのでしょうか?
それともユーザーマニュアルのsnd_mbxの項目に
「受信を待っているタスクがない場合には、pk_msg を先頭番地とするメッセージパケットを
メッセージキューの末尾に入れます。この時、送信するメッセージパケットは、既にメールボッ
クスのメッセージキューにながれていてはなりません。」
とあるので何らかの方法で正常にデータを受け取れる方法がありますでしょうか?
snd_mbx
- eForce技術担当
- 記事: 193
- 登録日時: 2014年4月24日(木) 14:18