Problém s kompilací programu v Code::Blocks

Dobrý den.
Zkusil jsem prostředí Code::Blocks pro ARM a mám problém s kompilací programu. Program je funkční v prostředí Keil(funguje i po nahrání do uProc.), ale v CB mi skončí s touto chybou:

arm-none-eabi-gcc.exe -mthumb -mno-thumb-interwork -mthumb-interwork -msoft-float -mlittle-endian -O -pedantic -W -Wall -g -mcpu=cortex-m3 -ffunction-sections -fsigned-char -DUSE_STDPERIPH_DRIVER -DSTM32F10X_MD  -mthumb -Wall -g    -I..\inc -I..\..\Library\CMSIS\CM3\CoreSupport -I..\..\Library\STM32F10x_StdPeriph_Driver\inc -Iinc  -c ..\..\Library\CMSIS\CM3\CoreSupport\core_cm3.c -o obj\Debug\Library\CMSIS\CM3\CoreSupport\core_cm3.o
C:\DOCUME~1\Patrik\LOCALS~1\Temp\ccgZyxyd.s: Assembler messages:
C:\DOCUME~1\Patrik\LOCALS~1\Temp\ccgZyxyd.s:508: Error: registers may not be the same -- `strexb r0,r0,[r1]'
C:\DOCUME~1\Patrik\LOCALS~1\Temp\ccgZyxyd.s:533: Error: registers may not be the same -- `strexh r0,r0,[r1]'
Process terminated with status 1 (0 minutes, 2 seconds)
2 errors, 0 warnings (0 minutes, 2 seconds)

Našel jsem něco o úpravě knihovny CM3:
register uint32_t result asm (“r2”);

To solve this problem with ARM cortex m3 I changed the supplied CMSIS file
core_cm3.c

I'm now using:
uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
   //uint32_t result=0;
   register uint32_t result asm ("r2");
   __ASM volatile ("strexh %0, %2, %1]" : "=r" (result) : "r" (addr), "r"
(value) );
   return(result);
}
...
uint32_t __STREXB(uint8_t value, uint8_t *addr)
{
   //uint32_t result=0;
   register uint32_t result asm ("r2");
   __ASM volatile ("strexb %0, %2, %1]" : "=r" (result) : "r" (addr), "r"
(value) );
   return(result);
}
instead of:
uint32_t __STREXH(uint16_t value, uint16_t *addr)
{
   uint32_t result=0;
   __ASM volatile ("strexh %0, %2, %1]" : "=r" (result) : "r" (addr), "r"
(value) );
   return(result);
}
...
uint32_t __STREXB(uint8_t value, uint8_t *addr)
{
   uint32_t result=0;
   __ASM volatile ("strexb %0, %2, %1]" : "=r" (result) : "r" (addr), "r"
(value) );
   return(result);

Bohužel po této úpravě se sice program přeloží bez chyb, ale po nahrání do uProcesoru nefunguje.

Jinak v KEIlu jsem už vyzkoušel připojení LCD, I2C RAM, DS18B20, klávesničku 4x4, a vše funguje bez problémů. Jen vzhledem k omezení kódu jsem chtěl přejít na Code::Bloks a nějak se mi nedaří.
Děkuji za jakoukoliv pomoc.

Zkoušel jsem to na modulu miniSTM32F103RB, s ARM začínám tak mě prosím hned nebijte :cry: celý projekt zde:
LED_Blik.zip (337 KB)

Nějakou takovou úpravu jsem taky dělal a fungovala. Už to ale nenajdu. Nahradil jsem totiž CMSIS novější verzí (staženou z webu ARMu, ST má stále nějakou historickou…), kde je to opravené. Chyba se začala objevovat po aktualizaci překladače - starší verze ty instrukce nekontrolovala.
Jdou ti přeložit některé z příkladů, co jsem se vložil? ([forum.mcontrollers.com/t/cb-st-arm-m0-m3-m4-freertos/2875/1))