Я читаю значение, отправленное через RS485, которое является значением кодировщика. Сначала я проверяю, вернул ли он символ E (кодировщик сообщает об ошибке), и если нет, то выполните следующие действия.
*position = atoi( buffer );
// Also tried *position = (s32) strtol(buffer,NULL,10);
Значение в буфере 4033536, а позиция устанавливается на 33536, это не происходит каждый раз в этой функции, возможно, 1 из 1000 раз, хотя я не считаю. Установка обратного счетчика программы и повторное выполнение строки, если она не удалась, возвращает тот же результат, но повторный запуск отладчика приводит к правильному преобразованию значения.
Я использую keil uvision 4, это специальная плата, использующая stm32f103vet6 и библиотеку stm32f10 V2.0.1. Это действительно поставило меня в тупик, я никогда не сталкивался с чем-то подобным, прежде чем любая помощь будет очень признательна.
Спасибо