rezident (28.03.2013 15:26 - 15:29, просмотров: 178) ответил SciFi на Враки. Вы даже не попробовали мой вариант.
Попробовал. Определения типов
#pragma pack(2)
typedef struct channelDef_t
{ uint16_t level0;
uint16_t border0;
uint16_t level1;
uint16_t border1;
} channelDef_t;
#pragma pack()
#pragma pack(2)
typedef struct flashA_t
{ channelDef_t ch[CHIN_MAXNUM];
uint32_t adcFactor[CHIN_MAXNUM];
uint32_t debounce[CHIN_MAXNUM];
} flashA_t;
#pragma pack()
В Файле main_info.c
extern const flashA_t segINFOA;
#pragma required=segINFOA
#pragma location=0x1000
const flashA_t segINFOA=
{//L0 | D0 | L1 | D1
1372, 205, 4002, 600,
1372, 205, 4002, 600,
1372, 205, 4002, 600,
1372, 205, 4002, 600,
//factor [16.16]
((2UL<<16UL)+14082UL),
((2UL<<16UL)+14082UL),
((2UL<<16UL)+14082UL),
((2UL<<16UL)+14082UL),
//debounce time [ms]
200UL,
200UL,
200UL,
200UL
};
В main.c хоть так
extern flashA_t segINFOA;
flashA_t volatile* pINFOA = (flashA_t volatile*)&segINFOA;
хоть так
extern const flashA_t segINFOA;
flashA_t volatile* pINFOA = (flashA_t volatile*)&segINFOA;
Результат идентичный.
IAR Universal Linker V5.3.2.26
Copyright 1987-2012 IAR Systems AB.
Error[e46]: Undefined external "segINFOA" referred in main ( D:\MIC-A4D12\Debug\Obj\main.r43 )