Первый старт с STM32-Discovery [Часть 6 – Линии ввода-вывода + двухстрочный ЖКИ WH1602D]

9 Января 2011 К комментариям

В прошлый раз побаловался с примером от производителя, сегодня решил переписать под себя работу с линиями ввода-вывода.

Написал для тестирования аналогичный пример, т.е. по нажатию кнопки статус светодиодов инвертируется. Так же по просьбам трудящихся маленький пример работы с двухстрочным ЖКИ индикатором WH1602D. Тестовый пример выводит две надписи:

0004_1

Работаем с линиями ввода-вывода

Первым делом написал макросы для работы в том стиле к которому привык, однако на данный момент не все реализовано. Дабы не отходить от старых привычек объявление линий реализовано достаточно просто, например объявление линии для управления светодиодом:

#define LED_GREEN	C, 9, HIGH, GENERAL_OUTPUT_PUSH_PULL, SPEED_2MHZ

Примечание:

литера порта [A, B, C …]
номер линии [0-15]
активный уровень [HIGH, LOW]
режим работы (согласно документации)
ANALOG
INPUT_FLOATING
INPUT_PULL_DOWN
INPUT_PULL_UP
GENERAL_OUTPUT_OPEN_DRAIN
GENERAL_OUTPUT_PUSH_PULL
ALTERNATE_OUTPUT_OPEN_DRAIN
ALTERNATE_OUTPUT_PUSH_PULL
максимальная частота работы линии
SPEED_2MHZ
SPEED_10MHZ
SPEED_50MHZ

и пример работы:

PIN_CONFIGURATION(LED_GREEN);
while (1)
{
  if (PIN_SIGNAL(BUTTON))
  {
    PIN_OFF(LED_GREEN);
  }
  else
  {
    PIN_ON(LED_GREEN);
  }
}

Двухстрочный ЖКИ индикатор

С ЖКИ индикатором пришлось повозиться, так как у меня не было версии трех вольтовой, пришлось паять подтягивающие резисторы к пяти вольтам, а линии переводить в режим работы с открытым коллектором стоком (GENERAL_OUTPUT_OPEN_DRAIN).

0020_1

Для работы с ЖКИ реализован необходимый минимум, функцию задержки на данный момент выполняет обычный цикл, когда разберусь с прерываниями перепишу. Полный проект, с примером для светодиодов и ЖКИ индикатора:

2011-01-02_lcd_2x16_test



comments powered by Disqus