newlib sscanf() выдает исключение по умолчанию в stm32

#scanf #stm32 #newlib

#scanf #stm32 #newlib

Вопрос:

я использую gcc для компиляции своего проекта, использую функцию sscanf () в main, размер стека равен 4k, я отлаживаю программу в gdb, показываю инструкцию VPUSH, создающую исключение.

и я тестирую функцию sprintf(), она отлично работает. почему функция sscanf() не работает в newlib для stm32?

Ответ №1:

Кроме STM32 серии F4, эти контроллеры не поддерживают инструкции с плавающей запятой, vpush являясь одной из них.

Проблема должна быть решена путем компиляции newlib с помощью -mfloat-abi=soft (а не softfp или hard ).