Статья ориентирована на одного моего товарища, вполне перспективного программиста, надеюсь она ему поможет. Если вы не он, закройте страницу тоже можете читать.
Основные вопросы этой заметки:
- как начать разрабатывать ПО для
stm32
в Keil
;
- что для этого необходимо.
Начать необходимо со второго вопроса. Необходимый минимум это среда программирования (Keil
), программатор и отладочная плата. Можно конечно и в симуляторе запускать программу, но это не так инетресно, так что плата и программатор нужны. Где брать писать не буду, не моя это забота.
У меня была одна из заметок про подобную тему, но то был контроллер Миландр. На этот раз его собрат от компании STMicroelectronics - stm32f103rc
. Необходимо было задетвовать ножки порта PB3
, PB4
и PB5
- на них висит SPI1
, с помощью которого планировалось управлять переферийной микросхемой.
Использую последнюю версию Keil (5.25) и программатор ST-Link V2, и никогда не замечал проблем с прошивокой микроконтроллеров Миландр. Правда раньше работал только с семейством ВЕ9х (91, 92, 93) и их пластиковыми аналогами. Всё хорошо ровно до тех пор пока не добрался до ВЕ1Т. Мало того, что он на ядре которое предназначено для прошивания во всевозможные ПЛИС, так ещё и никак не хотел шиться. Постоянно выдавая ошибку Invalid ROM Table
.
Отступать некуда, пришлось разобраться и решить эту проблему.
Вы также часто пользуетесь кейлом как и я? Программируете микроконтроллеры компании Миландр? Вы хотите легко и просто подключить и использовать в своём проекте FreeRTOS? Тогда эта маленькая заметка для вас.
План действий:
- создаём проект;
- выбираем используемые пакеты;
- конфигурируем операционку;
- запускаем и пользуемся.
Посмню как увидел в первый раз AD18. Тогда в нём была только одна темная тема, которая оказась очень привлекательной. В следующих версиях появилась и светлая, которую я сразу же испытал, но всё-таки вернулся на тёмную сторону. И появился исследовательский интерес - "Можно ли сделать свою тему целиком или хотябы просто разукрасить по другому?". Можно.
Постоянно приходится передавать и принимать данные из/в UART
, SPI
, I2C
и др. Всё просто и понятно когда посылки идут редко и есть время на их обработку, а что же делать если посылки могут идти пачками за один раз, а потом долгое время отсутствовать и мы при обработке первой не успеваем обрабатывать остальные и они теряются или портятся. Значит нужно использовать какой-то буфер, откуда потом понемногу брать и обрабатывать данные, а что делать если мы уже заполнили буфер и нам уже некуда писать? Писать дальше начиная с первого (на самом деле с нулевого) элемента буфера, дополнительно нужно учитывать место с которого можно читать данные и место с которого можно писать. Вот мы и получаем наш кольцевой буфер.