Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2016, 21:34   #1
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию Глобальная перменная

доброго времени суток.
Столкнулся недавно с проблемой изменения глобальной переменной
Есть стек
Код:
#define CODE_LENGHT 64*64
static uint8_t vm_programm_code[CODE_LENGHT];
один метод использует этот код, к примеру:
Код:
if(vm_programm_code[i]==0x01){
       // ...
    }
второй метод при поступлении определенных данных должен загрузить ими под завязку vm_programm_code и забыть про него
Код:
if (cp1<CODE_LENGHT) {
	vm_programm_code[cp1]=bt+b;
	sprintf(rxBuf1, " %d", vm_programm_code[cp1]);
	UART_write(hUART, rxBuf1, strlen(rxBuf1));
	cp1++;
}
после чего читаю свой код
Код:
System_printf("\vm_programm_code: ");
                    System_flush();
                    for(i=0;i<20;i++){
                        System_printf("%d ",vm_programm_code[i]);
                        System_flush();
... а он пустой. подскажите
mrprim вне форума Ответить с цитированием
Старый 07.08.2016, 21:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Вы бы лучше рассказали структуру проекта. Где определен стек? Где методы? В цпп-шках или хедерах? Наличие потоков?
p51x вне форума Ответить с цитированием
Старый 07.08.2016, 22:34   #3
mrprim
Пользователь
 
Регистрация: 07.06.2016
Сообщений: 52
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы бы лучше рассказали структуру проекта. Где определен стек? Где методы? В цпп-шках или хедерах? Наличие потоков?
структура проекта для дураков, 1 цпп в ней оба метода.

blabla.c
Код:
#define CODE_LENGHT 64*64
static uint8_t vm_programm_code[CODE_LENGHT];

void m1(void){
if(vm_programm_code[i]==0x01){
       // ...
    }
}

void taskFxn(UArg a0, UArg a1) {
if (cp1<CODE_LENGHT) {
    vm_programm_code[cp1]=bt+b;
    sprintf(rxBuf1, " %d", vm_programm_code[cp1]);
    UART_write(hUART, rxBuf1, strlen(rxBuf1));
    cp1++;
}
}

int main(void){
Task_construct(&task0Struct, (Task_FuncPtr)taskFxn, &taskParams, NULL);
m1();
System_printf("\vm_programm_code: ");
                    System_flush();
                    for(i=0;i<20;i++){
                        System_printf("%d ",vm_programm_code[i]);
                        System_flush();
}
данные поступаю в буфер единоразово. а значит берем их как из другого стека
mrprim вне форума Ответить с цитированием
Старый 08.08.2016, 10:02   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

А вы уверены, что Task_construct ждет завершения taskFxn?
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Глобальная процедура glazik Общие вопросы Delphi 5 06.12.2013 00:21
Tedit->перменная kwint3r Помощь студентам 1 14.03.2012 15:26
Глобальная переменная mutabor JavaScript, Ajax 2 31.12.2010 12:23
Зачем эта перменная (Delphi) reasons Помощь студентам 9 15.07.2010 22:22
C++ [Глобальная переменная] Lemo Помощь студентам 2 26.10.2009 17:49