eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika[ARM] Obsługa peryferiów poprzez API (wskazniki do struktury)Re: Obsługa peryferiów poprzez API (wskazniki do struktury)
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: "Artur M. Piwko" <m...@b...pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: Obsługa peryferiów poprzez API (wskazniki do struktury)
    Date: Wed, 30 May 2012 09:24:03 +0200
    Organization: Petroleum Drinkers (;
    Lines: 33
    Message-ID: <s...@b...pl>
    References: <f...@f...googlegroups.com>
    <y80629n75j0s$.1q2xhw0muf74c.dlg@40tude.net>
    <a...@q...googlegroups.com>
    <jpqv9u$l13$1@node2.news.atman.pl> <jpr05h$put$1@inews.gazeta.pl>
    <jpr0dm$lnd$2@node2.news.atman.pl>
    <a...@s...googlegroups.com>
    <jpto68$no7$1@inews.gazeta.pl>
    <5...@c...googlegroups.com>
    Reply-To: m...@b...pl
    NNTP-Posting-Host: 81.26.9.42
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1338365301 12996 81.26.9.42 (30 May 2012 08:08:21 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Wed, 30 May 2012 08:08:21 +0000 (UTC)
    X-User: pipene
    User-Agent: slrn/pre1.0.0-18 (Linux)
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:632171
    [ ukryj nagłówki ]

    In the darkest hour on Mon, 28 May 2012 11:14:04 -0700 (PDT),
    slawek7 <s...@w...pl> screamed:
    >> Jeżeli zrobisz podobną operację, ale w postaci:
    >> (*(uint8_t*)0x40010C10)=0x0f;
    >> to pod ten sam adres zapiszesz tylko pojedynczy bajt, pozostawiając
    >> pozostałe trzy bajty 32-bitowego słowa zapisanego pod adresem 0x40010C10
    >> bez zmian.
    >
    > Chyba rozumiem. Bo czy to znaczy że jeśli jakiś rejestr 32 bitowy ma
    > możliwość zapisania go wartością 16 bitowa bo tak podaje dokumentacja
    > to chcąc dokonać takiego zapisu liczbą 16 bitową używam rzutowania 16
    > bitowego w postaci (*(uint16_t*)0x40010C10)=0x1234;
    > Natomiast jeśli rejestr musi byc zapisany tylko wartością 32 bitowa bo
    > tak każe dokumentacja to u zywam (*(uint32_t*)0x40010C10)=0x12345678;
    >
    > Ale mam wątpliwość, czy czasem to rzutowanie nie oznacza tylko
    > arytmetyki wskaźników? Tzn za następny wskazywany obszar bęzie większy
    > albo o 2 bajty albo o 4, jak w przypadku zwykłej arytmetyki wskaźników

    Nie ma tu arytmetyki sensu strice.

    > np
    > uint16_t *ptr; // wskaźnik na liczbę 16 bitową
    > teraz zwiększamy adres o jeden ptr++; czyli tak naprawdę wskaźnik
    > skacze o dwa a nie o jeden adres?

    Wskaźnik skoczy o jeden adres zawsze (ale o 2 bajty).

    --
    [ Artur M. Piwko : Pipen : AMP29-RIPE : RLU:100918 : From == Trap! : SIG:229B ]
    [ 09:22:16 user up 13184 days, 21:17, 1 user, load average: 0.98, 0.10, 0.45 ]

    Would you rather have a 5-inch hard or an 8-inch floppy?

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: