Сегодня я принял решения попробовать стандартную библиотеку при написании программ. Выбор в пользу библиотек я сделал исходя из своего маленького опыта работы с МК и анализа кода самих библиотек. Большинство действий которые необходимо выполнить при инициализации того или иного модуля, почти в точности совпадали с моими действиями (или наоборот :). Не скажу что это окончательно :), нужно все таки поработать более плотнее.
Библиотека “Firmware Library for STM32”
Скачать библиотеку можно на сайте компании (www.st.com), я предлагаю скачать сразу одним нажатием примеры и исходники библиотеки скачать.
Примечание: Если вы скачали все разом, то в архиве stm32f10x_fw_archive.zip, вам необходимо найти архив um0427.zip и распаковать его содержимое в удобное для вас место.
В предлагаемом на сайте архиве содержится всё необходимое для работы:
исходные файлы
примеры по каждому модулю (АЦП, ЦАП и т.д.)
проекты заготовки под различные компиляторы
</ul> Первым делом копируем исходники библиотеки в корень нашего проекта (library), далее в папку mcu копируем файл конфигурации stm32f10x_conf.h и файлы с описанием обработчиков прерываний stm32f10x_it.c , stm32f10x_it.h:
Осталось поправить файл начальной инициализации startup.c :
и Makefile:
на данный момент я сразу добавил все доступные исходные файлы, на моем ПК время сборки проекта сильно не увеличилось, а компилятор все равно удалит не нужное :)
Ну вот кажется всё, можно приступать к работе и начнем ознакомление с библиотекой на примере универсального приёмопередатчика (USART).Модуль универсального приемопередатчика (USART)
Вот тут я не знаю что делать? Как и раньше описывать сам модуль и его битики или перейти к программе?
Сказать по правде мне уже скучно стало описывать битики, давайте попробуем перейти сразу к примеру.
Работать с модулем при помощи библиотеки очень приятно, можно о многом не думать ;)
План действий:
настроить линии ввода-вывода
настроить необходимый режим работы
разрешить работу модуля
</ul>
Настойка линий ввода-вывода:
Примечание: Пожалуй при работе с линиями ввода-вывода частично буду использовать свои заготовки, так как уж больно не рационально реализована работа в библиотеке.
Выбор необходимого режима работы:
Разрешаем работу модуля:
Для проверки неплохо бы реализовать эхо-ответ. Для приема данных воспользуемся прерываниями.
Разрешим прерывания по приему:
Сконфигурируем контроллер прерываний:
Напишем обработчик:
Код целиком (без обработчика):
Представленный код базируется на примере:
Provide a basic communication between USART1 and USART2 using interrupts.
пример можно найти в архиве.
Проект-пример полностью (для STM32F103CB):