
- •Учебный центр информационных технологий “информатика” выпускная квалификационная работа по куррсу профессиональной переподготовки
- •Введение
- •Задание на разрабатываемое устройство
- •Требования к охранным, пожарным шлейфам
- •Требования к входным и выходным исполнительным органам
- •Требования к конфигурированию и настройке устройства
- •Электронные компоненты печатной платы
- •Технические характеристики и параметры основных компонентов
- •Применяемые схемотехнические решения
- •Программное обеспечение микроконтроллера
- •Основная структура проекта
- •Задачи операционной системы реального времени.
- •Взаимодействие задач и прерываний.
- •Функции обработчиков прерываний
- •Rtos задачи проекта
- •Передача параметров настройки по usb
- •Программное обеспечение windows form c#
- •Определение общей структуры приложения
- •Создание библиотеки из ссылочных типов содержащие поля данных
- •Основная сборка проекта
- •Заключение
- •Список литературы
- •Приложение 1. Внешний вид приложения
Программное обеспечение микроконтроллера
Проект для микроконтроллера создан в среде разработки Keil uVision4. При написании кода вначале были составлены отдельные проекты и проверена их работа из примеров STM32F4xx_USB_Exemple для работы с USB, составлен отдельный проект для проверки АЦП и вывода их значений в окно терминала по USART, проект для работы с Sim900 опробована отправка сообщений, проект для работы с однопроводным интерфейсом 1-Wire проверена работа считывания 64 битного ключа iButton и работа термодатчиков. Основным проектом стал проект работы ОСРВ FreeRTOS . В этот проект затем добавлялся код из всех остальных вышеописанных проектов. Основная проблема соединения проектов заключалась в том, что некоторые из проектов содержали разную настройку частоты тактирования периферии. В настоящий момент существует программное обеспечение STM32F4 CubeMX позволяющее настроить все используемые выводы на нужную периферию, задать настройки необходимых прерываний, добавить ОСРВ, включить в проект использование драйверов USB, при необходимости добавить стек протоколов TCP/IP LwIP, после чего данная программа сгенерирует готовый шаблон кода со всеми необходимыми настройками.
Основная структура проекта
Проект содержит группу файлов распределенных по назначению Рис 4.1.1. Каждая группа хранится в отдельной папке.
Основные файлы проекта хранятся в папках STM32F4xx_StdPeriphDriver –хранятся основные функции и настройки управления для: _adc.c –аналогово-цифрового преобразования, _exit –внешние прерывания на выводах, _dma-управлением непрямого доступа к памяти минуя процессор (используем для копирования значений замеров по шлейфам в буфер), _usart –периферия для асинхронной передачи данных используя интерфейс RS232(используется два интерфейса один для управления GSM модулем Sim900, второй для вывода отладочной информации в окно терминала), _rcc-настройка тактовых частот периферийных шин, _tim-настройка и работа с таймером 1-wire устройств.
Рис 4.1.1 Структура проекта МК
Системные настройки находятся в папке STM32F4xx, это startup_stm32f4xx.s –ассемблерный файл содержит определение таблицы векторов прерываний, определение размера стека (для сохранения контекста при вызове функций и в нем же сохраняются значения СФР специальных функциональных регистров R0-R3,LR,PSR,PC ) и кучи (для работы с памятью используя memset, memcpy, malloc, для нужд ОСРВ выделяется отдельная куча из пространства RAM памяти) из этого файла вызывается вначале основная функция инициализации ядра void SystemInit(void) которая находится в файле system_stm32f4xx.c. Затем управление передается в main().
Для конфигурации USB содержится несколько папок. В нашем проекте используется конфигурация USB OTG Device Virtual Com Port (OTG-on-the-go подключение на ходу).Virtual COM Port –это отдельный подкласс USB устройств когда обмен выполняется по интерфейсу RS232, в этом случае STMElectronics поставляет уже готовый драйвер(VCP_V1.3.1.) под Windows 7 для работы с виртуальным портом. Это упрощает разработку устройства, так как в случае использования полноценного HID (Human interface devices) устройства необходимо описывать дескриптор устройств, интерфейса, конфигурации, конечных точек. Для непосредственной работы с данными служит файл usbd_cdc_vcp.c в папке App, этот файл согласно документации [4]-пользовательский уровень для интерфейса USB, папка USB Driver содержит файлы нижнего уровня где происходит взаимодействие рабочих регистров с функциями нижнего уровня. Взаимодействие пользовательских функций и обработка прерываний с драйверами нижнего уровня выполняется с помощью функций среднего уровня в папке USB Device. В папке USB Device в файле usbd_cdc_core.c содержутся основные дескрипторы устройства. Максимальная скорость передачи информации по USB в нашем случае состовляет 64Кб\сек, а само устройство определяется как FS (full speed) 12Мбит\с.
Папка RTOS содержит функции для работы ОСРВ. Файлы входящие в эту структуру: heap_4.c –содержит механизм выделения памяти для нужд FreeRTOS, tasks.c,queue.c, croutine.c – содержат реализацию механизма задач, реализация очередей и сопрограмм.
Папка User –содержит пользовательские файлы для работы с Sim900, 1-Wire устройствами и АЦП. Основной файл приложения, где начинается выполнение пользовательских задач –app.c.