( apal | 2025. 02. 09., v – 21:15 )

Miert lenne elszallt meg orultseg a struktura, strukturatomb? Az a legegyszerubb reprezentacioja valami memoriaban vagy memoria-szeru objektumban lakozo entitasnak, peldaul egy adott periferia MMIO regisztereinek. Fogod, veszed a data sheet-et, reprezentalod egy strukturaban/objektumban, pontosan ugy nevezed el a membereket ahogy a data sheet-ben van, opcionalisan osszeejted anonymous union-okon keresztul ha van szamottevo bitfield is (miert ne, nem ker enni, se a kod, se a memoriafoglalas nem lesz ettol nagyobb, cserebe kevesbe lesz write-only a program), es pontosan ugy programozod ezek utan ahogy le van irva a gyari doksiban. Pelda: stm32f0xx.h. Es a peripheral base address-t passzolgatod at a hardware abstraction layer-nek mint strukturapointer, attol fuggoen hogy melyik periferiaval is dolgozol a sok kozul. Enelkul hogy csinalnad meg hogy pl ugyanaz a layer 3+ absztrakcio van mondjuk egy dual UART rendszerben, mondjuk interrupt handler eseten? Pl:

__attribute__ (( interrupt(USCI_A2_VECTOR) )) void USCI_A2_ISR (void)
{
 UART_handler(&rs485_uhs,UCA2);
}
__attribute__ (( interrupt(USCI_A3_VECTOR) )) void USCI_A3_ISR (void)
{
 UART_handler(&debug_uhs,UCA3);
}

Ahol az UCA2 es az UCA3 egy USCI_UART* tipusu pointer:

typedef struct
 {      volatile        uint16_t        CTLW0;
        volatile        uint16_t        CTLW1;
        volatile        uint16_t        __padding_1;
        volatile        uint16_t        BRW;
        volatile        uint16_t        MCTLW;
        volatile        uint16_t        STATW;
        volatile        uint16_t        RXBUF;
        volatile        uint16_t        TXBUF;
        volatile        uint16_t        ABCTL;
        volatile        uint16_t        IRCTL;
        volatile        uint16_t        __padding_2[3];
        volatile        uint16_t        IE;
        volatile        uint16_t        IFG;
        volatile        uint16_t        IV;
 } USCI_UART;

es a megfelelo MMIO cimre mutat. 

Aztan innentol kezdve ez a "miert is dolgozunk ugy ahogy strukturatombokkel", meg aztan "miert is jo szorozni, foleg ha van szorzas" mar viszonylag konnyen megvalaszolhato kerdes :)