ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
928795
POV_ (21.06.2019 19:07, просмотров: 4003)
Внезапно кейл51 новую фигу подкинул. Может я чего в сишнике не знаю?... в одном хедере есть такое вот: typedef enum { regMODE = 0 ,regPERIOD ,regOFFSET_T1A ,regOFFSET_T1B ,regOFFSET_T2A ... тут куча всяких идентификаторов перечислена ,regSIZE } TReg; typedef struct { WORD reg[regSIZE]; TCRC CRC; } TParams; typedef struct { ... тут битовые поля на 16 бит } TModeRegister; в сишнике объявлено TModeRegister *ModeRegister = (TModeRegister*)&Params.reg[regMODE]; И оно не взлетело! Указатель ModeRegister оказывается инициализирован нулём, да ещё и указывает не на тот тип памяти (по умолчанию всё располагается в xram). Ручками в этом модуле в какой-то функции делаю присваивание уже на этапе компиляции - работает. В другом модуле (в main() например) - не работает, опять указатель не инициализирован. Если я тоже самое в симуляторе смотрю - всё ок. С чего бы такая гадость?