Моргаем диодами платы stm32f4 discovery при помощи StdPeripheralDriver

Я уже писал о том как моргать диодами отладочной платы stm32f4-discovery, но это не дублирующая статья. Речь пойдёт о более быстром и простом методе работы с периферией stm32 контроллера.

Действительно было бы очень странно если бы для 32 битных контроллеров не было стандартных библиотек. Ведь не на ассемблере пишем же 😉

Я буду писать в Eclipse. Разницы как вы понимаете никакой (слава богу ide много но код в них не отличается).

Итак.
Подключим заголовочные файлы для работы:
 

#include <stm32f4xx.h>
#include <stm32f4xx_rcc.h>  // тактирование
#include <stm32f4xx_gpio.h>  // периферия

// Перечисление групп переключаемых диодов:

enum {
  LEDS_GROUP1 = GPIO_Pin_12 | GPIO_Pin_13,
  LEDS_GROUP2 = GPIO_Pin_14 | GPIO_Pin_15,
};

Напомню, что диоды расположены на 12,13,14 и 15 выходах порта D.

Функция задержки:

void delay() {
    unsigned int i = 0;
    for (;i<10000000;i++){
        __NOP();   /// делать "ничего"
    }
}

Функция main:

Включаем тактирование порта D:

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

Структура для инициализации периферии:

  GPIO_InitTypeDef gpio;
  GPIO_StructInit(&gpio);  // заполним стандартными значениями

Настроим необходимые значение, остальные оставим стандартными:

  gpio.GPIO_OType = GPIO_OType_PP;
  gpio.GPIO_Mode = GPIO_Mode_OUT;  // метим как выход
  gpio.GPIO_Pin = LEDS_GROUP1 | LEDS_GROUP2;  // все выходы с диодами (12-15)

Инициализация:

  GPIO_Init(GPIOD, &gpio);

Ну и бесконечный цикл программы:

  do {
      GPIO_SetBits(GPIOD, LEDS_GROUP1);  // включаем 1 группу диодов
      delay();  // ждём
      GPIO_ResetBits(GPIOD, LEDS_GROUP1);  // выключаем
      delay(); //ждём
      /* тоже со второй группой */
      GPIO_SetBits(GPIOD, LEDS_GROUP2);
      delay();
      GPIO_ResetBits(GPIOD, LEDS_GROUP2);
      delay();
  } while(1);

Таким образом будут мигать зелёный оранжевый диоды и синий с красным по очереди. Задержка не большая. Такчто переключения довольно быстрые.
Скачать проект.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий