[elektro] C kérdés

hg12345 hg12345 at freemail.hu
Sun Dec 19 18:07:26 CET 2010


Köszönöm a tanácsokat.
Hogy a hordazható legyen a code és a különböző forditók különböző behelyettesítéseit
meg tudom csinálni. Nem ez a problémám.

Összeszedtem ami szükséges :

typedef struct
{
  __IO uint16_t CR1;
  uint16_t  RESERVED0;
  __IO uint16_t CR2;
  uint16_t  RESERVED1;
  __IO uint16_t SMCR;
  uint16_t  RESERVED2;
  __IO uint16_t DIER;
  uint16_t  RESERVED3;
  __IO uint16_t SR;
  uint16_t  RESERVED4;
  __IO uint16_t EGR;
  uint16_t  RESERVED5;
  __IO uint16_t CCMR1;
  uint16_t  RESERVED6;
  __IO uint16_t CCMR2;
  uint16_t  RESERVED7;
  __IO uint16_t CCER;
  uint16_t  RESERVED8;
  __IO uint16_t CNT;
  uint16_t  RESERVED9;
  __IO uint16_t PSC;
  uint16_t  RESERVED10;
  __IO uint16_t ARR;
  uint16_t  RESERVED11;
  __IO uint16_t RCR;
  uint16_t  RESERVED12;
  __IO uint16_t CCR1;
  uint16_t  RESERVED13;
  __IO uint16_t CCR2;
  uint16_t  RESERVED14;
  __IO uint16_t CCR3;
  uint16_t  RESERVED15;
  __IO uint16_t CCR4;
  uint16_t  RESERVED16;
  __IO uint16_t BDTR;
  uint16_t  RESERVED17;
  __IO uint16_t DCR;
  uint16_t  RESERVED18;
  __IO uint16_t DMAR;
  uint16_t  RESERVED19;
} TIM_TypeDef;


#define PERIPH_BASE           ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */
#define APB1PERIPH_BASE       PERIPH_BASE
#define TIM2_BASE             (APB1PERIPH_BASE + 0x0000)
//#define TIM2                ((TIM_TypeDef *) TIM2_BASE)     //eredeti meghatározás, a programban csak local változóként használják


#define		TIMbaseAddr		(TIM2)

TIM_TypeDef	*TIMbase = TIMbaseAddr;			//Én globál változóként használom, és müködik a programban.
//sajnos a rendszerben csak int tipus változokat lehet cimre definiálni, azért kell igy megoldani.

#define	 HwPwm1Reg 	TIMbase->CCR2		//PWM kimeneti regiszter
#define	 HwPwm2Reg 	TIMbase->CCR3		//PWM kimeneti regiszter
#define	 HwPwm3Reg 	TIMbase->CCR1		//PWM kimeneti regiszter

 //Ez lenne a cimforditó tábla:

__IO uint16_t* HWPwmPointerArray[]  = { (__IO uint16_t*) &HwPwm1Reg, (__IO uint16_t*) &HwPwm2Reg, (__IO uint16_t*) &HwPwm3Reg  };


// a forditó értékelése

..\HWlayer\It_TimerBase.c(97): error:  #28: expression must have a constant value
..\HWlayer\It_TimerBase.c(97): error:  #44: expression must have pointer type
..\HWlayer\It_TimerBase.c(97): error:  #28: expression must have a constant value
..\HWlayer\It_TimerBase.c(97): error:  #44: expression must have pointer type
..\HWlayer\It_TimerBase.c(97): error:  #28: expression must have a constant value
..\HWlayer\It_TimerBase.c(97): error:  #44: expression must have pointer type



More information about the Elektro mailing list