Вход
Наше всё
Теги
codebook
无线电组件
Поиск
Опросы
Закон
Вторник
26 ноября
О смысле всего сущего
0xFF
Средства и методы разработки
Мобильная и беспроводная связь
Блошиный рынок
Объявления
Микроконтроллеры
PLD, FPGA, DSP
AVR
PIC
ARM, RISC-V
Технологии
Кибернетика, автоматика, протоколы
Схемы, платы, компоненты
ARM, RISC-V контроллеры
382286
Топик полностью
Молодой коллега
(22.01.2013 14:31, просмотров: 166)
ответил
fk0
на
Нуля нет -- а что вместо нуля? ARM, стек растёт вниз. Затирать конец буфера уж точно не может. Покажи sprintf.c здесь (нет IAR). Вариант: таки прерывания не запрещаются? И обработчик портит какой-то регистр (не сохраняется и т.п.) и потому
Вместо нуля мусор который был до вызова sprintf. В терминал летит мусор + JTAGом вижу в отладчике на точке останова после sprintf. IARовский sprintf:
int (sprintf)(char *_Restrict s, const char *_Restrict fmt, ...) { /* print formatted to string */ int ans; va_list ap; _SProutInfo x; va_start(ap, fmt); x.s = s; ans = _Printf(&_SProut, &x, fmt, &ap _SECURE_PARAM(0)); *x.s = '\0'; va_end(ap); return ans < 0 ? ans : (x.s - s); }
Запрет прерываний проверю.
Ответить
Настоятельно рекомендую попробовать заменить этот мусор на чтонить определенное инициализировав буфер или хотя бы место где должен быть нуль.
-
Codavr
(22.01.2013 14:56
)