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.
Збільшення числа світлодіодів:
Якщо ви хочете підключити додаткові світлодіоди або відключити невикористовувані, необхідно:
- У файлі "stm32_ub_led.h" всі світлодіоди повинні бути вказані в перерахуванні "LED_NAME_t", а "LED_ANZ" скориговано з урахуванням числа використовуваних світлодіодів.
- У файлі "stm32_ub_led.c" у визначенні "LED_t" кожному світлодіоду повинні бути присвоєні порти, піни мікроконтролера та початковий стан.
У додатку проект CooCox окрема бібліотека для використання в інших проектах. Автор оригіналу статті просить ставити питання на його сайті німецькою або англійською мовами.
Прикреплені файли:
- ub_stm32f4_led_v101_rus.rar (3 Кб)
- Demo_01_Led_rus.rar (143 Кб)