STM32CubeIDE + FreeRTOS + newlib = HardFault!

ST Microelectronics проделали замечательную работу в попытке интегрировать инструменты для embedded разработки под STM32. У них почти получилось, но в CubeMX и генерируемой им коде довольно много косяков, для которых приходится придумывать обходные пути.

Одна из проблем – использование sprintf(“Value is %8.2f”, f); приводит к HardFault

То есть вы не можете выводить и вводить числа с плавающей точкой при использовании FreeRTOS. На голом проце – пожалуйста, достаточно включить -u _printf_float в настройках проекта (MCU Settings). А вот под FreeRTOS это вызывает HardFault.

Читать далее