Важная информация
RSS лента

gordiole

Разработка копировщика флоппи дисков (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 */
И мы можем разместить в этой зоне необходимые нам файлы.
Код:
/* USER CODE BEGIN Includes */
#include "vcp.h"
/* USER CODE END Includes */
В пределах этой зоны комментариев Cube ничего менять не будет.

В Части 2 дневника мы конфигурировали таймеры для симуляции READ_DATA и INDEX, инициализационный код для таймеров Cube сгенерировал, но эти таймеры по умолчанию выключены. Нам нужно добавить в проект код включения таймеров, который мы можем разместить в месте USER CODE 2
Код:
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
Для этого добавим несколько вызовов библиотечных функций. Эти функции разрешат нашим таймерам генерировать сигналы, но эти функции не разрешают прерывания от таймеров, то есть работа таймеров не нагружает микроконтроллер.
Код:
/* 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 и PB9, то сможем увидеть результат нашей работы по настройке сигналов симуляции

Вывод PB8, симуляция сигнала READ_DATA




Вывод PB9, симуляция сигнала INDEX

Обновлено 04.04.2017 в 12:35 gordiole

Категории
Без категории

Комментарии

Трекбэков