[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