×

Внимание

Форум находится в режиме только для чтения.

Программирование STM32 с помощью мышки. Новая утилита STM32CubeMX.

10 года 3 нед. назад #5854 от Alena
Компания STMicroelectronics, занимающая лидирующее положение на рынке микроконтроллеров на...

Компания STMicroelectronics, занимающая лидирующее положение на рынке микроконтроллеров на базе ядер Cortex-M, выпустила новую утилиту для быстрой генерации кода настройки периферии STM32.

Скачать утилиту, а также необходимую документацию можно здесь.

В настоящее время можно генерировать код для двух семейств микроконтроллеров: STM32F2 и STM32F4. В будущем в это ПО будут включены абсолютно все семейства STM32. Данная утилита станет заменой устоявшегося решения в виде стандартной библиотеки периферии. Переход от одного к другому будет максимально безболезненным.

После установки STM32CubeMX попробуем сгенерировать проект. Запускаем программу и выбираем «New Project».

Cube1

Рис 1. Проект STM32CubeMX.


Выбираем семейство (рис2). Полноценный генератор кода есть на STM32F2 и STM32F4. На остальных семействах STM32CubeMX также работает, но в усечённом виде.

Cube2

Рис 2. Выбор семейства STM32

После ввода подсемейства вводим применяемый корпус (рис 3).

Cube3

Рис 3. Выбор корпуса контроллера


Обращаем внимание, что при выборе семейства, подсемейства и корпуса контроллера меняется представление периферии и выбор возможной модели контроллера.

После выбора конкретной  модели контроллера мы попадаем в уже известную утилиту «MicroXplorer», в которой можно определить используемые выводы.

Cube4

Рис 4. Определение выводов микроконтроллера


Параллельно с настройкой портов ввода-вывода вводим некоторые свойства периферии:

Cube5

Рис 5. Ввод свойств периферии

На следующей вкладке настраиваем тактирование. Автору не удалось настроить тактирование от внешнего кварца, вероятно в будущем это станет возможным.

Cube6

Рис 6. Настройка тактирования

Переходим на вкладку «Configuration». Здесь уже отражена выбранная нами периферия. Тут же можно настроить связи периферии, например запускать АЦП по переполнению таймера, связи контроллера прямого доступа к памяти и прерывания.

Cube7

Рис 7. Настройка DMA

После выбора на вкладке контроллера DMA (1 или 2) программа с учётом выбранной вами ранее периферии предложит назначить источник запроса на копирование. Здесь же можно указать другие параметры копирования: циклическое/нормальное, направление копирования, требование инкремента адреса источника/приёмника и т.д.
Прерывания также можно настраивать щелчками мыши:

Cube8

Рис 8. Настройка прерываний

Выдаваемый список прерываний также согласован с выбранной ранее периферией. Вверху окна можно задать уровень вложенности прерываний и в соответствии с этим присвоить разрешённому прерыванию (в нашем случае это «переполнение таймера 1») группу и подгруппу.
Далее, настраиваем периферию (у нас это таймер 1, АЦП1 и Уарт2)

Cube9

Рис 9. Настройка таймера

Вводим параметры, характерные для таймеров: направление счёта, предделитель, период счёта и т.д. Не забываем, при этом пройтись по всем вкладкам («NVIC Settings», «GPIO Settings» «DMA Settings»)
Далее генерируем проект, нажав на выделенный элемент и заполнив необходимые параметры (название, путь, среда проекта и т.д):

Cube10

Рис 10. Генерация кода проекта

После генерации кода в указанном месте появятся 2 папки «SRC» и «INC» с файлами настроек.

Для примера рассмотрим сгенерированный код инициализации таймера:

void MX_TIM1_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_OC_InitTypeDef sConfigOC;
  TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
  TIM_MasterConfigTypeDef sMasterConfig;

  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 0;
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.Period = 5000;
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim1.Init.RepetitionCounter = 0;
  HAL_TIM_Base_Init(&htim1);
……………..


Данная функция физически находится в файле main.c и вызывается из функции int main(void) на старте. Нетрудно заметить, что название функций изменилось. Например, вместо TIM_Base_Init(TIM1, &htim1) теперь используется  HAL_TIM_Base_Init(&htim1). Тем не менее общая идеология библиотек стандартной периферии и используемых утилитой STM32CubeMX легко угадывается.

Сами файлы библиотек можно скачать непосредственно со страницы применяемого контроллера. В нашем случае это пакет STM32F2Cube здесь.
В целом можно констатировать, что освоение и без того удачных микроконтроллеров STM32 становится более простым. Отныне программист должен щёлкать мышкой, а не копировать куски программ из папки стандартной библиотеки с последующей доработкой под свои потребности.

Получить более подробную информацию по продукции STMicroelectronics  вы можете, обратившись: 

E-mail: 
  Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Телефон: (343) 372-92-30 

Задать вопрос техподдержке вы можете на нашем форуме.

 

Время создания страницы: 0.043 секунд
Работает на Kunena форум