Этой статей, мы начинаем публикацию цикла материалов (состоящего из нескольких десятков статей), посвященных работе с микроконтроллерами семейства 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.
Увеличение числа светодиодов:
Если вы хотите подключить дополнительные светодиоды или отключить неиспользуемые, необходимо:
- В файле "stm32_ub_led.h" все светодиоды должны быть указаны в перечислении "LED_NAME_t", а "LED_ANZ" скорректировано с учетом числа используемых светодиодов.
- В файле "stm32_ub_led.с" в определении "LED_t" каждому светодиоду должны быть присвоены порты, пины микроконтроллера и начальное состояние.
В приложении проект CooCox отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- ub_stm32f4_led_v101_rus.rar (3 Кб)
- Demo_01_Led_rus.rar (143 Кб)
Комментарии (8) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
1) Максимально унифицировать у упростить код основной программы;
2) Даже если библиотека и перегружена ненужными функциями, даже начинающий программист сможет в ней разобраться и применить полученные знания в других задачах. В первую очередь эти статьи - уроки, на них должны учиться.
ИМХО большинство стандартных библиотек также избыточны
Этот цикл статей в большей степени будет охватывать программную составляющую STM32
[Автор]