Технология программирования внешней целевой системы / STM32 |
ПО SimInTech включает в себя генератор СИ-кода, с помощью которого можно конвертировать проект, созданный в SimInTech в графическом виде с помощью блоков, в СИ-код. Генератор СИ-кода SimInTech использует шаблон сборки кода, в результате работы которого создается проект в IDE Keil v5 (либо в выбранном пользователем из предложенных), с помощью которого можно получить исполняемый образ программы и перенести его на микроконтроллер (МК) STM32. Шаблон сборки является алгоритмом, позволяющим упростить использование СИ-кода для выбранной целевой системы. В результате работы шаблона, полученный СИ-код может быть включен в проект в IDE для дальнейшей сборки и загрузки во флэш-память микроконтроллера. Кроме того, пользователь может сам создавать шаблоны сборки на базе существующих. Использование STM32CubeMX позволяет получить код настройки периферии МК STM32 и автоматически перенести его в секции главного файла проекта «main.c». Разработанные в ПО SimInTech библиотечные блоки обмена данными на базе библиотек HAL реализовывают обмен данными с периферией МК, а вся настройка периферии МК STM32 осуществляется с помощью инструмента STM32CubeMX от компании-разработчика МК STM32. Такое решение позволяет разрабатывать программное обеспечение для всей линейки МК STM32. Кроме того, используя библиотечные блоки пользователь может создавать свои уникальные решения (блоки) по обмену данными с устройствами ввода-вывода.
В данном руководстве демонстрируется технология программирования МК STM32F407 с использованием шаблона сборки «STM32F407VGT6_CubeMX».
Перед началом программирования также необходимо ознакомится с документом, расположенном в директории установки SimInTech «\SimInTech\doc\Программирование встраиваемых систем\Программирование встраиваемых систем под управлением микропроцессора\Генерация Си-кода для микропроцессоров с использованием SimInTech.pdf».
Рисунок 1. Окно проекта с демо-примером «Rcv_Send_UART.prt».
Рисунок 2. Рабочая область окна проекта демо-примера «Send_Rcv_signal.prt».
Рисунок 3. Окно проводника операционной системы, директория «\bin\CodeTemplates\STM32F407VGT6_CubeMX\CopyToPrt».
Рисунок 4. Окно настройки «Кодогенератор Си», вкладка «Загрузка», с добавленным проектом.
Рисунок 5. Окно настройки «Кодогенератор Си», вкладка «Настройки», с выделенными свойствами, которые необходимо изменить.
Сохранить файл настройки параметров, на вкладке «Загрузка» нажав на кнопку «Сохранить конфигурацию», в открывшемся окне проводника операционной системы сохранить файл под именем «Gen_set.alt» или задать желаемое имя файла.
Рисунок 6. Окно настройки «Кодогенератор Си», вкладка «Загрузка», с выделенной кнопкой «Пересобрать модули и конфигурацию».
Рисунок 7. Окно проводника операционной системы, директория «\src\STM32F407VGT6_CubeMX\Core\Src» с созданными кодогенератором файлами.
Рисунок 8. Окно проводника операционной системы с выделенным файлом, который необходимо открыть.
Рисунок 9. Окно ПО STM32CubeMX с открытым проектом «STM32F407VGT6_CubeMX.ioc» с контекстным меню контакта «PD6».
Рисунок 10. Окно ПО STM32CubeMX с открытым проектом «STM32F407VGT6_CubeMX.ioc» с выделенными параметрами «USART2», которые необходимо изменить.
Рисунок 11. Окно проводника операционной системы со сгенерированными файлами настроек МК.
Рисунок 12. Окно ПО STM32CubeMX вкладка «Project Manager».
Рисунок 13. Окно IDE Keil v5 с загруженным проектом «STM32F407VGT6_CubeMX.uvprojx».
Структура созданного генератором Си-кода проекта подробно описана в документе, расположенном в директории установки SimInTech«\SimInTech\doc\Программирование встраиваемых систем\Программирование встраиваемых систем под управлением микропроцессора\Генерация Си-кода для микропроцессоров с использованием SimInTech.pdf». В этом документе подробно рассматривается включение в проект СИ-кода полученного с помощью инструмента генерации СИ-кода ПО SimInTech, а также подробно описывается технология создания блоков обмена данными с контроллерами устройств ввода-вывода. Особенность рассматриваемой технологии заключается в том, что ПО STM32CubeMX помещает СИ-код настроек контроллеров периферии и не требуется самостоятельно разрабатывать библиотечные блоки инициализации контроллеров периферии, используемые библиотечные блоки будут реализовывать только обмен данными (чтение/запись).
Для компиляции программного кода проекта «STM32F407VGT6_CubeMX.uvprojx» необходимо в главном окне IDE Keil v5 нажать на кнопку «Project» и выбрать пункт «Build Target». После завершения компиляции необходимо убедиться, что она произведена успешно и ошибки отсутствуют: в окне «Build Output» будут отображаться предупреждения и ошибки или информация об их отсутствии.
Рисунок 14. Окно IDE Keil v5 с сообщениями об успешной загрузке кода проекта «STM32F407VGT6_CubeMX.uvprojx» на МК STM32F407VGT6.
используя провода для подключения виртуального COM-порта ST-LINK: разъемы U2 pin 12 (ST-LINK_TX) и U2 pin 13 (ST-LINK_RX), к STM32F407 USART2 к разъемам, выбранным на шаге 6 в ПО STM32CubeMX: P2 pin 30 (PD5: USART2_TX) и P2 pin 29 (PD6: USART2_RX).
После завершения генерации Си-кода, подключения МК к ПК и загрузки кода во флэш-память МК, для проверки работоспособности сгенерированного кода необходимо открыть проект «Send_Rcv_signal.prt» (Рисунок 2). Данный проект предназначен для передачи и отображения данных, принимаемых по UART интерфейсу.
Перед началом моделирования необходимо в свойствах блока «RS - Асинхронный обмен» в выпадающем списке «Параметры RS подключения» изменить значение свойства «Номер последовательного порта» согласно указанному номеру COM-порта адаптера USART-USB (при соединении первым способом) в диспетчере устройств ПК.
После чего запустить проект на моделирование нажатием на кнопку «Пуск» на панели кнопок окна проекта SimInTech. При запуске проекта «Send_Rcv_signal.prt» на моделирование на персональном компьютере будут генерироваться периодически изменяющиеся сигналы, передаваться на микроконтроллер STM32 по интерфейсу UART и считываться от микроконтроллера STM32 по интерфейсу UART отправленные обратно сигналы.
Рисунок 15. График зависимости выходных сигналов от времени.
Выполнение проектов с разной частотой дискретизации на МК происходит в контексте прерываний таймеров общего вида. Для решения этой задачи используется библиотечный блок «STM32 TIMER SHED». Он определяет в прерывании какого таймера будет вызван на выполнение алгоритм проекта. Пример проектов с разной частотой дискретизации расположен в директории «\SimInTech\Demo\Microprocessors\Examples-STM32\TIMER_TASK».
Рисунок 16. Окно настройки «Кодогенератор Си» с загруженной конфигурацией «Gen_Set.alt» демо-примера «TIMER_TASK».
Подготовка проектов для генерации Си-кода и структура проекта, полученного в результате генерации СИ-кода нескольких проектов, подробно описана в первой главе документа «\SimInTech\doc\Программирование встраиваемых систем\Программирование встраиваемых систем под управлением микропроцессора\Генерация Си-кода для микропроцессоров с использованием SimInTech.pdf».
Рисунок 17. Контекстное меню блока «STM32 - I2C - Передача данных в комбинированной транзакции» с выделенным пунктом «Действия» подпунктом «Разблокировать».
Рисунок 18. Окно «Свойства» блока «STM32 - I2C - Передача данных в комбинированной транзакции» с выделенным свойством, которое необходимо изменить.