Присмотрелся к асму. Выглядит фейково. Загрузки GPIOA->BSHR и sw слишком жестко не соответствуют. Засунул сорец в свой мунривер, асм разумен но жырный.
if((FIRdata&mask)!=0)
005a 0357E4FD lhu a4,-34(s0)
005e 8357A4FE lhu a5,-22(s0)
0062 F98F and a5,a4,a5
0064 C207 slli a5,a5,16
0066 C183 srli a5,a5,16
0068 85C7 beqz a5,.L5
{
GPIOA->BSHR=patternOneSet;
006a B7170140 li a5,1073811456
006e 93870780 addi a5,a5,-2048
0072 37070004 li a4,67108864
0076 13070730 addi a4,a4,768
007a 98CB sw a4,16(a5)
GPIOA->BSHR=patternOneFix;
007c B7170140 li a5,1073811456
0080 93870780 addi a5,a5,-2048
0084 37070005 li a4,83886080
0088 13070720 addi a4,a4,512
008c 98CB sw a4,16(a5)
008e 0DA0 j .L6
.L5:
}
else
{
GPIOA->BSHR=patternZeroSet;
0090 B7170140 li a5,1073811456
0094 93870780 addi a5,a5,-2048
0098 37070006 li a4,100663296
009c 13070710 addi a4,a4,256
00a0 98CB sw a4,16(a5)
GPIOA->BSHR=patternZeroFix;
00a2 B7170140 li a5,1073811456
00a6 93870780 addi a5,a5,-2048
00aa 37070007 li a4,117440512
00ae 98CB sw a4,16(a5)
.L6:
}