Keil rtx メッセージ キューの使用に問題があります。send_thread と receive_thread の 2 つのスレッドがあります。
擬似コード:
send_thread
{
int16_t array1[20];
int16_t array2[20];
int16_t array3[20];
int16_t *common_array[3]
common_array[0] = array1;
common_array[1] = array2;
common_array[2] = array3;
osMessagePut(MsgBox, (uint32_t)common_array, osWaitForever);
}
receive_thread
{
int16_t receive_array1[20];
int16_t receive_array2[20];
int16_t receive_array3[20];
int16_t *receive_common_array[3]
MsgBox_status = osMessageGet(MsgBox, osWaitForever);
//now here I want to copy all arrays from send_thread to received_arrays.
receive_common_array = MsgBox_status.value.p; //here I should copy the received adress to a new pointer, but I have received just void* variable, so I can't assign like that
memmove(receive_array1, receive_common_array[0], 20);
memmove(receive_array2, receive_common_array[1], 20);
memmove(receive_array3, receive_common_array[2], 20);
}
問題は、何が間違っているのか、それをどのように実装する必要があるのかということです。アドレスをデバッグしましたが、同じものを取得しました。違いは、send_thread では送信変数がポインターの配列へのポインターですが、receive_thread には void* しかなく、その中の値にアクセスできないことです。
どんな提案でも大歓迎です。