Thanks Jeppe, Solved! it was a problem in the TDMAChannel declaration which I modified without rebuilding the fpc
here the produced asm code: # [39] Serial1.print(' 0x'+hexstr(longword(DMA1_Channel1.CNDTR),8)); ldr r0,.Lj98 *ldrh r1,[r0]* mov r2,#0 sub r0,r11,#560 mov r3,#8 bl SYSTEM_$$_HEXSTR$QWORD$BYTE$$SHORTSTRING sub r3,r11,#560 ldr r2,.Lj84 sub r0,r11,#304 mov r1,#255 bl fpc_shortstr_concat sub r1,r11,#304 ldr r0,.Lj25 ldr r0,[r0] bl HWSERIAL$_$TSTM32SERIAL_$__$$_PRINT$SHORTSTRING # [40] Serial1.print(' 0x'+hexstr(longword(DMA1_CNDTR1),8)); ldr r0,.Lj98 *ldr r1,[r0]* mov r2,#0 sub r0,r11,#560 mov r3,#8 bl SYSTEM_$$_HEXSTR$QWORD$BYTE$$SHORTSTRING sub r3,r11,#560 ldr r2,.Lj84 sub r0,r11,#304 mov r1,#255 bl fpc_shortstr_concat sub r1,r11,#304 ldr r0,.Lj25 ldr r0,[r0] bl HWSERIAL$_$TSTM32SERIAL_$__$$_PRINT$SHORTSTRING the only difference is the ldrh instruction which means halfword, in fact the original TDMAChannel declares CCR and CDNTR as word, changing them to longword and after rebuilding the fpc everything is working with channel array! -- View this message in context: http://free-pascal-general.1045716.n5.nabble.com/FPC-Embedded-DMA-with-STM32-tp5721684p5721689.html Sent from the Free Pascal - General mailing list archive at Nabble.com. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal