Код: Выделить всё
//extern "C" void DMA1_Channel1_IRQHandler()
//{
DMA1_Channel1_IRQHandler:
PUSH {R4-R7}
// uint32_t isr = DMA1->ISR;
LDR.N R1,??DataTable2 ;; 0x40020000
LDR R0,[R1, #+0]
// uint32_t tmp=counter;
LDR.N R2,??DataTable2_1
LDR R3,[R2, #+300]
// DMA1->IFCR = DMA_IFCR_CHTIF1 | DMA_IFCR_CTCIF1;
MOVS R4,#+6
STR R4,[R1, #+4]
// if(STOP_STATE stop; tmp<STRIP_LEN)
CMP R3,#+100
BCS.N ??DMA1_Channel1_IRQHandler_0
// dma_pwm_buf[isr&DMA_ISR_HTIF1?0:1] = leds[tmp];
LSLS R0,R0,#+29
ADD R1,R3,R3, LSL #+1
ITE MI
MOVMI R0,#+0
MOVPL R0,#+24
ADD R1,R2,R1
ADD R5,R2,#+304
ADD R5,R5,R0
LDRB R6,[R1, #+1]
LDRB R4,[R1, #+2]
LDRB R0,[R1, #+0]
LDR.N R7,??DataTable2_2
ADD R1,R7,R0, LSL #+3
ADD R6,R7,R6, LSL #+3
LDRD R0,R1,[R1, #+0]
STRD R0,R1,[R5, #+0]
LDRD R0,R1,[R6, #+0]
STRD R0,R1,[R5, #+8]
ADD R0,R7,R4, LSL #+3
LDRD R0,R1,[R0, #+0]
STRD R0,R1,[R5, #+16]
// counter=tmp+1;
ADDS R3,R3,#+1
STR R3,[R2, #+300]
POP {R4-R7}
BX LR ;; return
// else
// dma_pwm_buf[isr&DMA_ISR_HTIF1?0:1] = stop;
??DMA1_Channel1_IRQHandler_0:
LSLS R0,R0,#+29
ITE MI
MOVMI R0,#+0
MOVPL R0,#+24
ADD R1,R2,#+304
ADD R0,R1,R0
MOVS R4,#+0
STRD R4,R4,[R0, #+0]
STRD R4,R4,[R0, #+8]
STRD R4,R4,[R0, #+16]
// counter=tmp+1;
ADDS R3,R3,#+1
STR R3,[R2, #+300]
POP {R4-R7}
BX LR ;; return
//}