ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 апреля
382239 Топик полностью
Молодой коллега (22.01.2013 12:03, просмотров: 271) ответил Ксения на Значит в стеке его кто-то потом затирает. Быть не может, чтобы sprinf нуль не добавлял - код смотрите.
Старший коллега "вынудил" зарегистрироваться.  Вот код где sprintf не добавляет ноль, причем как-то не всегда не добавляет, иногда добавляет: void lpc_printf (const char *format, ...) { char buffer[512 + 1]; //va_list vArgs; taskENTER_CRITICAL();////////////// __disable_interrupt();/////////////// //va_start(vArgs, format); //retv4=sprintf((char *)buffer, (char const *)format, vArgs); sprintf((char *)buffer, "Test message...\n"); //va_end(vArgs); __enable_interrupt();/////////////// taskEXIT_CRITICAL();/////////////// _DBG(buffer); } Ставлю точку останова сразу после sprintf и смотрю сто в буфере - нуля нет! Буфер лежит в стеке FreeRTOS, стек FreeRTOS в SDRAM. Единственное логичное объяснение отсутствия нуля - некорректная работа SDRAM, но тесты памяти проходят без ошибок. Жажду свежих идей. :)