. . glaube es siet bei mir ziemlich änlich aus ausser das ich CAN Register mit bestimmten Adresse anspreche.

Aber das ist ja auch NUR Speicher . . .

++++++++++++++++++++
char Data[8] = "11223344";

volatile char *pTxRegister = (char *)(CAN1_BASE + CAN_TDL0R_OFFSET);

for (unsigned char i = 0; i < 8; i++){
*pTxRegister = Data[i ];
pTxRegister++;
}

Müsste doch gehen, ABER
jedes Zeichen wird nicht nur in das adressierte Byte sondern in jedes der 4 Bytes des Registers übertragen.

- - - Aktualisiert - - -

. . ok hab es erst mal so gelöst:
pTxReg1 = Data[i+3] << 24 | Data[i+2] << 16 | Data[i+1] << 8 | Data[i+0];
pTxReg2 = Data[i+7] << 24 | Data[i+6] << 16 | Data[i+5] << 8 | Data[i+4];

i - ist die Verschiebung durch das Data Array.

Ist nicht so elegant wie ne Schleife aber erfüllt den Zweck.

Trotzdem würde mich interessieren wieso es mit der Schleife nicht tut ???
Wo ist da der Fehler ??