STM32F103C8 BluePill - 36 byte ile bilink.

Başlatan z, 15 Şubat 2021, 17:21:05

z

https://www.mediafire.com/file/qc81pcapayilceo/blink.zip/file

60 byte ile bilink.

Kendi programlarinizi gelistirirken bu ornegi referans almayin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Tagli

Tam senlik bir site: https://codegolf.stackexchange.com/
Gerçi burada daha çok kaynak kodun kaç byte olduğuna bakıyorlar yanlış anlamadıysam.
Gökçe Tağlıoğlu


z

#3
12 Byte daha kuculttunce  48 Byte oldu.

Kodlari eve gidince kart uzerinde denemem gerekecek.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mr.engineer


kimlenbu

Günümüzde mcu'ların ram ve romları kolay kolay dolmadığı için açıkçası program boyutunu önemsemeyeli o kadar zaman geçti ki...Assembly kullanmayalı da çok zaman geçti.

Assembly, register seviyesinde kodlama, standart peripheral library, hal library derken insan rahata çok çabuk alışıyor :)

z

#6
Ilk verdigim projede Blink.S dosyasinin icini bosaltip yerine bu kodlari yerlestirdigimizde ise 48 Byte ile blink yapilmakta.

            PRESERVE8
            THUMB
RCC_APB2ENR EQU    0x40021018
GPIOC_CRH  EQU    0x40011004


            AREA  RESET, CODE, READONLY
Reset_      PROC
_Vektors    DCD    0x20004F00
            DCD    Reset
            ENTRY

Reset      LDR    R0, =RCC_APB2ENR
            MOV    R1, #0x10
            STR    R1, [R0]
            
            LDR    R0, =GPIOC_CRH

            LDR    R1, =0x00500000
L1          STR    R1, [R0]
            MOV    R2, R0
L2          SUBS  R2, #0x1000
            BGT    L2
            EOR    R1, #0x00500000 
            B      L1


            ALIGN
            ENDP
            END

@kimlenbu

Buradaki incelik asm kullanmak degil fakat inceligi gorebilmek icin asm kodlari incelemek gerek.

Biraz daha ugrasilinca Blue Pill'i sadece led yak isine adayinca bayagi da sacma olsa da 36 byte ile BLINK.

             PRESERVE8
            THUMB
GPIOC_CRH   EQU    0x40011004
            AREA   RESET, CODE, READONLY
Reset_      PROC
_Vektors    DCD    0x40021018
            DCD    Reset
            ENTRY
Reset       MOV    R1, #0x10
            STR    R1, [R13]
            LDR    R0, =GPIOC_CRH
L1          STR    R1, [R0]
            MOV    R3, R0
L2          SUBS   R3, #0x1000
            BGT    L2
            EOR    R1, #0X00500000
            B      L1
            ALIGN
            ENDP
            END

Fakat hala ugrasmak isterseniz daha da kisa yazmak mumkun gibi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com