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); //Инвертировать состояние светодиода 

Пример использования:

 //-------------------------------------------------------------- // File     : main.c // Date     : 10.02.2013 // Version  : 1.0 // Author   : UB // EMail    : mc-4u(@)t-online.de // Web      : www.mikrocontroller-4u.de // CPU      : STM32F4 // IDE      : CooCox CoIDE 1.7.0 // Modules  : CMSIS_BOOT, M4_CMSIS_CORE // Function : Demo of the LED Library // Reference: These two files must be written to 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.с» в определении «LED_t» каждому светодиоду должны быть присвоены порты, пины микроконтроллера и начальное состояние.

В приложении проект CooCox отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.