ARM

Старт ARM. STM32CubeMX. STM32 GPIO. HAL

Всем привет!) Продолжаем изучать ARM микроконтроллеры от компании ST, сегодня будем говорить, как можно быстро создать проект и включить светодиод не вдаваясь в глубокие познания архитектуры микроконтроллера. Для начала переходим по ссылке скачиваем программу STM32CubeMX и STM32CubeUpdater (один установочный пакет). Первая программа является генератором проектов, вторая является обновлением HAL-а для ST серии микроконтроллеров.

1. Запускам программу и создаем проект.

2. Выбираем микроконтроллер или борду для создания проекта.

3. Конфигурируем железо по необходимости ADC, DAC и различные RTOS.


4. Настройка тактирования микроконтроллера.

5. Проверяем из каких кубиков состоит проект и сохраняем все настройки проекта.

6. Рассчитываем потребляемую мощность микроконтроллера.

7. Генерируем проект в среде которой будем работать, я всегда выбираю MDK – Keil.

8. С генерируемый проект.

9. Обновляем firmware для STM-а.

И наконец вставляем в главный цикл программы пару строк кода, чтобы немного помигать светодиодом.

HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
HAL_Delay(500);

На сегодня все!) всем пока.

8 thoughts on “Старт ARM. STM32CubeMX. STM32 GPIO. HAL

    1. Вы, наверное, забыли вставить данный код в главный цикл.
      while (1)
      {
      HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);
      HAL_Delay(500);
      HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);
      HAL_Delay(500);
      }

      1. Всё заработало. Только вот после прошивки приходится сброс нажимать. Сама не запускается. Хотя другие проекты (не из куба) прошиваются и сразу работают без ресета.

  1. Мне кажется, что шаги 8 и 9 нужно поменять местами.
    Сначала обновить firmware для STM-а, а потом генерировать проект 😉
    Поймите, каждый ваш не точный шаг в тексте – может создать уйму проблем для новичков 😉

  2. Согласен, так, наверное будет правильнее, а лучшее в самое начало.

  3. Подскажите пожалуйста, как записать данные в порт, к примеру число 0b01010101 01010101 на выводы GPIOD?

    1. Разобрался, GPIOD->BSRR= 21845;
      забавно но на представление числа в двоичном виде GPIOD->BSRR= 0b01010101 01010101; Keil начинал ругаться.

Leave a Reply

Your email address will not be published. Required fields are marked *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.