Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Вопрос по коду! IAR for MSP (язык С)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
РДимка
Добрый день!
Возникло 2 вопроса:
Во-первых: пишу программку, модульная структура. В одном модуле (файле) обьявляю переменную
typedef struct
{
unsigned char lbyte;
unsigned char hbyte;
}word_t;
word_t _TAPRC[1];
в другом одуле (файле) обьявляю другую переменную:
unsigned char _CRT;

и каково же мое удивление когда при отладке я нахожу, что _TAPRC[1].hbyte и переменная _CRT располагаются в одной и той же ячейке в памяти!!! Что это такое????

и во вторых:
В одном модуле имеется функция:
void uartGetMsg (unsigned char * pMsg, unsigned char count) //function returns the addres of received message
{
pMsg=(unsigned char *)&_MsgBuf;
count=_CRT;
}
она просто присваеват пе5реданным переменным адрес буфера и значение переменной, используемой в данном модуле.

из другого модуля я вызываю эту функцию:
unsigned char * _pRMsg;
unsigned char cnt=0; //variable for count the recieved byte
uartGetMsg(_pRMsg, cnt); //find the address of the message

я просто хочу использовать полученные в другом модуле программы данные
Компилятор IAR для MSP (MSP 430F427) выдает мне предупреждение
Warning[Pe550]: parameter "pMsg" was set but never used
Warning[Pe550]: parameter "cnt" was set but never used

и при том при отладке он не присваевает передлаваемым переменным никаких значений!!!!

Прошу помощи в этом вопросе!!!
Спасибо!
Серега
Дело не в модулях.
Первая проблема: неправильная адресация массива, нужно _TAPRC[0].
Вторая проблема: см. код. Но проблема присвоение адреса одной переменной другой через третью пока не решена, помоему проще брать напрямую адрес _MsgBuf.
Для модуля раскидайте функции и объявления.

Код
typedef struct
{
    unsigned char lbyte;
    unsigned char hbyte;
} word_t;

word_t _TAPRC[1];

unsigned char _CRT;
unsigned char _MsgBuf = 0x88;


unsigned char *_pRMsg;
unsigned char cnt=0; //variable for count the recieved byte
unsigned char xxx = 0x55;


void demo()
{
    _TAPRC[0].lbyte = 0x77;   // <--------------
    _TAPRC[0].hbyte = 0x09;  // <--------------

}

void uartGetMsg (unsigned char *pMsg, unsigned char *count) //function returns the addres of received message
{
    pMsg = &_MsgBuf;
    *count = _CRT;     // <--------------
}





void main(void)
{
    _CRT = 10;
    demo();
    _pRMsg = &xxx;
    uartGetMsg(_pRMsg, &cnt); //find the address of the message
    //uartGetMsg(&xxx, &cnt);
    demo();
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.