zapis na port u stm32F4

Fanda Kopriva info na elektronikavyvoj.cz
Úterý Únor 14 11:36:14 CET 2017


Dne 14. 2. 2017 v 10:55 Hynek Sladky napsal(a):
> Mam registr: GPIOF->ODR
> Ted ziskam jeho adresu: &GPIOF->ODR
> Adresa = ukazatel je podle typu promenne, tedy zde na uint32_t.
> Pro prekladac zmenim typ - ukazatel na byte - aby vedel, jake 
> instrukce pouzit: (uint8_t*)&GPIOF->ODR
> Dale napisu obecnejsi - snad i pochopitelnejsi - zapis pro pristup k 
> jednotlivym bytum: ((uint8_t*)&GPIOF->ODR)[0] = 0x12;
>
> Aby se s tim pracovalo jednoduseji, tak z toho muzeme udelat makro:
> #define PORT_BYTE(port) ((volatile uint8_t*)&(port))
> Pak muzu psat jednodussi zapis:
> PORT_BYTE(GPIOF->ODR)[0] = 0x12;
> A muzu to vyuzit take pro dalsi porty bez nutnosti definovat si nove a 
> nove definice...
> Makro se da upravit tak, aby cislo bytu bylo take jako parametr:
> #define PORT_BYTE(port,byte) ((volatile uint8_t*)&(port))[byte]
> PORT_BYTE(GPIOF->ODR,0) = 0x12;
>
> Hynek Sladky
>
diky Fanda
>
> Dne 14.2.2017 10:23, Fanda Kopriva napsal(a):
>>
>> *(volatile uint8_t *)&GPIOF->ODR = 0x12;
>> diky za nakopnuti
>> Ale tyto konstrukce jsou pro mne bohuzel neprehledne a zavani mi 
>> temnou magii.:-)
>> Stareho psa novym ...atd.
>> nakonec jsem si dodefinoval registry s bytovym pristupem a funguje to.
>>
>> sfr unsigned char volatile GPIOF_ODRL absolute  0x40021414;
>> sfr unsigned char volatile GPIOF_ODRH absolute  0x40021415;
>>    GPIOF_ODRH = 0x12
>>
>>    fanda
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20170214/84ff4657/attachment.html>


Další informace o konferenci Hw-list