STM32F4. Урок 1 - управління світлодіодами

В цій статті ми починаємо публікацію циклу матеріалів (що складається з кількох десятків статей), присвячених роботі з мікроконтролерами сімейства STM32. В основному, робота буде розглядатися на прикладі налагоджувальної плати STM32F4Discovery, але практично всі приклади будуть працездатні на будь-якому STM32 мікроконтролері.

На платі STM32F4Discovery є 4 світлодіоди, якими можна керувати. Ця бібліотека дозволяє легко ними керувати.

  • LED4 (зелений) підключається до PD12
  • LED3 (помаранчевий) підключається до PD13
  • LED5 (червоний) підключається до PD14
  • LED6 (синій) підключається до PD15

Вимоги:

  • Підключені модулі CooCox-IDE: GPIO.
  • Підтримувані бібліотеки: відсутні.

Перерахування:

typedef enum {
  LED_GREEN = 0,
  LED_ORANGE = 1,
  LED_RED = 2,
  LED_BLUE = 3
}LED_NAME_t;

typedef enum {
  LED_OFF = 0, //Світлодіод вимкнений
  LED_ON       //Світлодіод увімкнений
}LED_STATUS_t;

Функції:

void UB_Led_Init(void); //Ініціалізація світлодіодів
void UB_Led_On(LED_NAME_t led_name); //Увімкнення світлодіода
void UB_Led_Off(LED_NAME_t led_name); //Вимкнення світлодіода
void UB_Led_Toggle(LED_NAME_t led_name); //Переключити світлодіод
void UB_Led_Switch(LED_NAME_t led_name, LED_STATUS_t wert); //Інвертувати стан світлодіода

Приклад використання:

//--------------------------------------------------------------
// Файл     : main.c
// Дата     : 10.02.2013
// Версія   : 1.0
// Автор    : UB
// Електронна пошта    : mc-4u(@)t-online.de
// Веб-сайт  : www.mikrocontroller-4u.de
// CPU      : STM32F4
// IDE      : CooCox CoIDE 1.7.0
// Модулі   : CMSIS_BOOT, M4_CMSIS_CORE
// Функція  : Демонстрація бібліотеки LED
// Посилання: Ці два файли повинні бути записані на 8MHz
//              "cmsis_boot/stm32f4xx.h"
//              "cmsis_boot/system_stm32f4xx.c"
//--------------------------------------------------------------

#include "main.h"
#include "stm32_ub_led.h"

void Delay(volatile uint32_t nCount)
{
  while(nCount--)
  {
  }
}

int main(void)
{
  SystemInit(); // Ініціалізація налаштувань кварца

  UB_Led_Init(); // Ініціалізація світлодіодів

  UB_Led_On(LED_GREEN); // Увімкнення зеленого світлодіода

  while(1)
  {
    Delay(5000000);
    UB_Led_Toggle(LED_RED); // Миготіння червоним світлодіодом
  }
}

Режим роботи:

Зелений світлодіод світить постійно;
Червоний світлодіод миготить.
Бібліотека, використана в прикладі: stm32_ub_led.

Збільшення числа світлодіодів:

Якщо ви хочете підключити додаткові світлодіоди або відключити невикористовувані, необхідно:

  1. У файлі "stm32_ub_led.h" всі світлодіоди повинні бути вказані в перерахуванні "LED_NAME_t", а "LED_ANZ" скориговано з урахуванням числа використовуваних світлодіодів.
  2. У файлі "stm32_ub_led.c" у визначенні "LED_t" кожному світлодіоду повинні бути присвоєні порти, піни мікроконтролера та початковий стан.

У додатку проект CooCox окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить ставити питання на його сайті німецькою або англійською мовами.

Оригінал статті

Прикреплені файли:

Top