[elektro] C kérdés
hg12345
hg12345 at freemail.hu
Sun Dec 19 22:14:45 CET 2010
Szia!
Köszönöm, hogy segíteni próbálsz.
Mint sejtettem, sajnos ez a megoldás se tökéletes :-(
1, a #define és a konstans között nincs semmi különbség, mert az elöfeldolgozó még fordítás elött a valódi értékeket előállítja
2, sajnos igy értéket adni egy struktura tömbre mutató pointernek nem lehet, mert struktura tömbre mutató pointer castolást igényel.... a sima mezei konstans nem emészti.
3, a fentiek miatt az eredmény ugyan az.
Ez a megoldás nem volt szimpatikus, a kód hordozhatóságát nem segíti elő, más eszköz esetén ez elképzelhető más perifériához kapcsolódik... Amit kiítam az csak a kód lényeges része, több periféria előválasztó tartalmaz.
Szerintem a hiba leginkább a linker butaságára vezethető vissza amikor nem képés két pointer összadni, csak pointer + konstans müveltet ismer. (A GNU-c leginkább ilyenkor kiabált)...
De minden ötletre kiváncsi vagyok.....
Info <info at kiralyelektronika.hu> írta:
>Szia !>
>
> TIM_TypeDef *TIMbase = TIMbaseAddr; //Én globál változóként>
> használom, és müködik a programban.>
> ..\HWlayer\It_TimerBase.c(97): error: #28: expression must have a>
> constant value>
>
Naszal, innentől nem adhatod meg konstansnak, csak #define.>
Vagy ezt alakítod át #define, aztán lehet konstans.>
>
Most tehát ez van:>
TIM_TypeDef *TIMbase = 0x40000000;>
>
>
Ez a sor nem kell:>
TIM_TypeDef *TIMbase = TIMbaseAddr;>
>
Ezt pedig így:>
#define HwPwm1Reg (TIMbaseAddr.CCR2)>
#define HwPwm2Reg (TIMbaseAddr.CCR3)>
#define HwPwm3Reg (TIMbaseAddr.CCR1)>
>
>
----------------------------------------->
elektro[-flame|-etc]>
More information about the Elektro
mailing list