Главная » Микроконтроллеры
Призовой фонд
на май 2017 г.
1. Тестер компонентов MG328
Паяльник
2. Осциллограф DSO138
Паяльник
3. Регулируемый паяльник 60 Вт
Паяльник
4. 100 руб.
От пользователей

Похожие статьи:


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 отдельная библиотека для использования в других проектах. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.

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

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

Теги:

Опубликована: 0 0
Я собрал 0 3
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 4.9 Проголосовало: 3 чел.

Комментарии (8) | Я собрал (0) | Подписаться

0
mr_smit #
Что то слишком заморочено для такой простой операции. typedef enum и т.д.
Ответить
0

[Автор]
Rough #
Как я думаю, автор преследует две цели:
1) Максимально унифицировать у упростить код основной программы;
2) Даже если библиотека и перегружена ненужными функциями, даже начинающий программист сможет в ней разобраться и применить полученные знания в других задачах. В первую очередь эти статьи - уроки, на них должны учиться.
ИМХО большинство стандартных библиотек также избыточны
Ответить
0
bitterman #
Лучше сразу делать правильно, чем приучаться к беспорядку и после этого переучиваться.
Ответить
0
viktor26 #
Разве в первом уроке не должна рассматриватся архитектура камушка например ну и различные команды для него что и как устроено вообще, а то что-то ничего не понятно мне как новичку
Ответить
0
talibanich #
На странице раздела по МК есть целый подраздел посвященный STM32 (Уроки по STM32, ARM), и несколько вводных статей по этой теме, где подробно описывается и архитектура и система команд и все необходимое для работы. Нет смысла переписывать одно и то же по несколько раз.
Этот цикл статей в большей степени будет охватывать программную составляющую STM32
Ответить
0
Дмитрий #
Какой язык программирования?
Ответить
0

[Автор]
Rough #
Си в среде CooCox.
Ответить
0
bitterman #
А 5000000 -- это сколько реального времени задержки? И есть ли стандартные функции этой библиотеки с понятными единицами измерения?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Программатор Pickit3
Программатор Pickit3
Ручной фен 450 Вт с регулировкой температуры Макетная плата для пайки (10 шт)
вверх