Разработка копировщика флоппи дисков (Floppy Deuce). Часть 3
STM32CubeMX. Первая генерация проекта для компилятора EWARM IAR Systems.
Перед началом генерации нам необходимо произвести настройку проекта. Для этого заходим в меню Project -> Settings в открывшемся окне на вкладке Project производим настройки согласно картинке
У нашего микроконтроллера 128 KB оперативной памяти и будем использовать её полностью, для этого в поле Minimum Heap Size (куча) указываем 120 KB (0x1E000), а в поле Minimum Stack Size 8 KB (0x2000).
Подтвердив настройки, Cube предложит загрузить последнюю версию Firmware для нашего микроконтроллера (т.к. это наша первая генерация проекта)
Подтверждаем загрузку Firmware, после это Cube произведет загрузку и распаковку Firmware
На этом собственно настройка проекта завершена, можно приступать к генерации проекта. Для этого заходим в меню Project -> Generate Code. Cube показываем нам ход генерации кода
По окончании генерации, Cube предлагает открыть папку проекта или открыть проект (конечно если установлен EWARM)
EWARM. Добавление кода в проект.
Для совместного использования Cube и EWARM необходимо придерживаться определенных правил. Код написанный пользователем должен располагаться в зоне комментариев сгенерированных Cube, чтобы при последующих генерациях проекта он не затирался. Рассмотрим на примере main.c, предположим нам необходимо добавить файлы включений в проект. Для этих целей Cube сгенерировал зону комментариев USER CODE Includes.
И мы можем разместить в этой зоне необходимые нам файлы.Код:/* USER CODE BEGIN Includes */ /* USER CODE END Includes */
В пределах этой зоны комментариев Cube ничего менять не будет.Код:/* USER CODE BEGIN Includes */ #include "vcp.h" /* USER CODE END Includes */
В Части 2 дневника мы конфигурировали таймеры для симуляции READ_DATA и INDEX, инициализационный код для таймеров Cube сгенерировал, но эти таймеры по умолчанию выключены. Нам нужно добавить в проект код включения таймеров, который мы можем разместить в месте USER CODE 2
Для этого добавим несколько вызовов библиотечных функций. Эти функции разрешат нашим таймерам генерировать сигналы, но эти функции не разрешают прерывания от таймеров, то есть работа таймеров не нагружает микроконтроллер.Код:/* USER CODE BEGIN 2 */ /* USER CODE END 2 */
Если мы откомпилируем проект, загрузим его в микроконтроллер и подключимся осциллографом к выводам PB8 и PB9, то сможем увидеть результат нашей работы по настройке сигналов симуляцииКод:/* USER CODE BEGIN 2 */ /* Включаем таймер 10 имитации сигнала READ_DATA */ if(HAL_TIM_OC_Start(&htim10, TIM_CHANNEL_1) != HAL_OK) { /* Starting Error */ Error_Handler(); } /* Включаем таймер 11 имитации сигнала STEP */ if(HAL_TIM_OC_Start(&htim11, TIM_CHANNEL_1) != HAL_OK) { /* Starting Error */ Error_Handler(); } /* USER CODE END 2 */
Вывод PB8, симуляция сигнала READ_DATA
Вывод PB9, симуляция сигнала INDEX
Комментарии
Трекбэков
Всего трекбэков 0
Ссылка трекбэка: