Первый старт с STM32-Discovery [Часть 6 – Линии ввода-вывода + двухстрочный ЖКИ WH1602D]
В прошлый раз побаловался с примером от производителя, сегодня решил переписать под себя работу с линиями ввода-вывода.
Написал для тестирования аналогичный пример, т.е. по нажатию кнопки статус светодиодов инвертируется. Так же по просьбам трудящихся маленький пример работы с двухстрочным ЖКИ индикатором WH1602D. Тестовый пример выводит две надписи:
Работаем с линиями ввода-вывода
Первым делом написал макросы для работы в том стиле к которому привык, однако на данный момент не все реализовано. Дабы не отходить от старых привычек объявление линий реализовано достаточно просто, например объявление линии для управления светодиодом:
#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).
Для работы с ЖКИ реализован необходимый минимум, функцию задержки на данный момент выполняет обычный цикл, когда разберусь с прерываниями перепишу. Полный проект, с примером для светодиодов и ЖКИ индикатора: