Я все-таки придерживаюсь той логики, что если у микроконтроллера нет FPU, то числа с плавающей точкой под запретом! Это ж как long long какой-нибудь пихать в STM8!
И как-то еще ни разу не возникало желания флоаты забульбенить в F103... Если же они действительно понадобятся, то нужнобудет брать уже более жирный МК, где FPU аппаратно решит проблему вычислений.
P.S. Для вычисления юстировочных коэффициентов я использую цепные дроби. В итоге преобразования из ADU в число с фиксированной точкой имеет одно целочисленное деление и одно целочисленное умножение.
Здесь, например. Настройки хранятся во Flash-памяти за отсутствием EEPROM (надо, кстати, нормальный виртуальный EEPROM in flash сделать, чтобы пореже стирать флеш-память при обновлении настроек).
P.P.S. Тот код тоже черезжопный: я opencm3 еще использовал. Сейчас все новое буду делать на голом CMSIS, чтобы от всяких рукожопых разработчиков не зависеть.
Сообщение отредактировал Эдди - Nov 14 2016, 21:44