Какую библиотеку или генератор проектов использовать для первого проекта STM32F3?

Я собираюсь начать свой первый проект STM32. (Ранее я использовал микроконтроллеры atmega и имею многолетний опыт работы с C, в основном на стороне сервера.)

Кажется, есть три варианта, учитывая, что я хочу разрабатывать в командной строке в Linux, используя make.

  1. сгенерированный STM32CubeMX проект makefile,
  2. сгенерированный STM32CubeMX проект makefile, включая FreeRTOS, или
  3. проект makefile с использованием libopencm3.

Приложение будет обрабатывать и отправлять сообщения на 4 или более последовательных порта, используя разные протоколы. Иногда GPIO будут установлены или очищены.

Мои вопросы:

  • Почему существует libopencm3? Почему кто-то выбрал его, а не проект makefile, сгенерированный STM32CubeMX.
  • Стоит ли изучать FreeRTOS для такого проекта?

person fadedbee    schedule 19.12.2019    source источник
comment
Есть ли другой сайт Stack Exchange, где я мог бы лучше задать этот вопрос?   -  person fadedbee    schedule 19.12.2019


Ответы (2)


Я не знаю хороших бесплатных инструментов для создания проектов. Я работал в основном с STM32CubeMX, и я могу сказать вам, что он, безусловно, полезен (особенно для новичков), но далеко не то, чему вы можете доверять. Я нашел в нем много ошибок за эти годы, некоторые были исправлены, другие все еще там. ИМХО, в общем, вы должны использовать инструмент генератора кода с осторожностью в качестве учебного инструмента, возможно, извлекая из них фрагменты кода.

Я много использовал FreeRTOS и могу сказать, что чувствую себя с ней хорошо. Может быть, это не так хорошо, как коммерческий продукт, но, безусловно, он хорошо документирован и прост в обращении. Не было никаких проблем с этим.

person Damiano    schedule 19.12.2019
comment
Спасибо, это действительно полезно. - person fadedbee; 19.12.2019
comment
@Damiano, так как у вас есть представление о FreeRTOS. Можно ли использовать функции HAL и в FreeRTOS? если нет, то какие есть альтернативы? - person unkown53; 04.11.2020
comment
Вы можете использовать функцию HAL в freertos afaik. Есть также некоторое промежуточное программное обеспечение от st (например, дерьмовый стек usb, который напрямую поддерживает freertos), и freertos также поддерживается в конфигураторе проекта cubemx. Просто запомните правила вызова функции rtos внутри обратных вызовов isr: Быстро: Только постфиксная функция _isr и только если приоритет прерывания ниже configMAX_SYSCALL_INTERRUPT_PRIORITY - person Damiano; 10.11.2020

libopencm3 — это альтернатива STM32 HAL и CMSIS (снято с производства). У меня нет опыта работы с ним, но HAL весьма полезен.

FreeRTOS отлично подходит для создания программ с несколькими процессами, которым необходимо совместно использовать ресурсы в критической по времени манере. Это не обязательно всегда, но может использоваться в менее требовательных ситуациях.

STM32CubeMX, как заметил Дамиано, полезен, но не зависит от него. По моему опыту, лучше всего создать базовый проект в STM32CubeMX, а затем отключить его от проекта. Затем вы дополнительно добавляете необходимые библиотеки HAL вручную и оставляете большую часть реальной инициализации и настройки в своих руках. Однако я буду использовать его для создания примеров того, как инициализировать определенные периферийные устройства и библиотеки, чтобы затем перенести их в свой собственный проект.

person Tarick Welling    schedule 19.12.2019
comment
Спасибо, похоже, мне следует немного больше изучить FreeRTOS. - person fadedbee; 19.12.2019
comment
CMSIS не является библиотекой и не снята с производства. Снятый с производства HAL для STM — это SPL. - person 0___________; 19.12.2019
comment
@P__J__ Ты прав, это проскользнуло мимо. Пожалуйста, не стесняйтесь исправить мой ответ - person Tarick Welling; 20.12.2019