- Настройка оборудования и требования
- Светодиод N76E003 и схема интерфейса кнопки
- Распиновка N76E003
- Простая программа управления GPIO для N76E003
- Программирование N76E003 и проверка вывода
В нашем предыдущем руководстве мы использовали базовую программу мигания светодиодов в качестве руководства по началу работы с N76E003, мы уже узнали, как настроить Keil IDE и настроить среду для программирования микроконтроллера nuvoton N76E003. Пришло время пойти немного дальше и использовать базовый интерфейс GPIO для управления дополнительным оборудованием. Если вам интересно, вы также можете проверить другие руководства по GPIO для микроконтроллера, которые перечислены ниже:
- STM32 Nucleo64 с CubeMx и TrueSTUDIO - управление светодиодами
- STM8S с управлением Cosmic C GPIO
- PIC с MPLABX LED Blink Tutorial
- MSP430 с Code Composer Studio - простое управление светодиодами
Поскольку в нашем предыдущем руководстве мы использовали только светодиод, чтобы мигать, используя вывод IO в качестве выхода. В этом руководстве мы узнаем, как использовать другой вывод IO в качестве входа и управлять дополнительным светодиодом. Не теряя много времени, давайте оценим, какое оборудование нам требуется.
Настройка оборудования и требования
Поскольку в качестве входа необходимо использовать переключатель, первое, что нам нужно, это кнопка. Нам также требуется дополнительный светодиод для управления этой кнопкой. Помимо этих двух, нам также требуется резистор для ограничения тока светодиода и дополнительный резистор для понижения напряжения на кнопке. Это будет дополнительно продемонстрировано в схематическом разделе. Компоненты, которые нам требуются -
- Кнопка (любой тип переключателя мгновенного действия - тактильный переключатель)
- Любой цвет светодиода
- Резистор 4,7 кОм для понижающего напряжения
- Резистор 100R
Не говоря уже о том, что помимо перечисленных выше компонентов, нам понадобится отладочная плата на базе микроконтроллера N76E003, а также программатор Nu-Link. Кроме того, для подключения всех компонентов, как показано ниже, также требуются макетная плата и соединительные провода.
Светодиод N76E003 и схема интерфейса кнопки
Как мы можем видеть на схеме ниже, тестовый светодиод, который находится внутри платы разработки, подключен к порту 1.4, а дополнительный светодиод подключен к порту 1.5. Резистор R3 используется для ограничения тока светодиода.
К выводу 1.6 подключена кнопка SW. Каждый раз, когда нажимается кнопка, штифт становится высоким. В противном случае он станет низким из -за понижающего резистора R1 4,7 кОм. Вы можете узнать больше о подтягивающих и понижающих резисторах, если вы новичок в этой концепции.
Вывод также является выводом, связанным с программой, к которому имеет доступ программист. Он используется для отправки данных программы. Однако мы увидим причину выбора этих выводов, а также получим достоверную информацию о расположении выводов N76E003.
Распиновка N76E003
Контактная схему N76E003 можно увидеть в ниже image-
Как мы видим, каждый вывод выполняет несколько функций и может использоваться для разных целей. Возьмем пример. Контакт 1.7 может использоваться как прерывание, аналоговый вход или как универсальная операция ввода-вывода. Таким образом, если какой-либо вывод используется как выводы ввода / вывода, соответствующие функции будут недоступны.
Из-за этого контакт 1.5, который используется в качестве выходного контакта светодиода, потеряет ШИМ и другие функции. Но это не проблема, поскольку для этого проекта не требуется других функций. Причина выбора контакта 1.5 в качестве выхода и контакта 1.6 в качестве входа, из-за ближайшей доступности контактов GND и VDD для легкого подключения.
Однако в этом микроконтроллере из 20 контактов 18 контактов могут использоваться в качестве контакта GPIO. Контакт 2.0 специально используется для входа сброса и не может использоваться как выход. Кроме этого вывода, все выводы могут быть настроены в режиме, описанном ниже.
Согласно таблице, PxM1.n и PxM2.n - это два регистра, которые используются для определения операции управления портом ввода-вывода. Теперь совсем другое дело - писать и читать порт GPIO. Поскольку запись в регистр управления портом изменяет состояние фиксации порта, тогда как чтение порта получает статус логического состояния. Но для чтения порта он должен быть установлен в режим ввода.
Простая программа управления GPIO для N76E003
Полную программу, используемую в этом руководстве, можно найти внизу этой страницы, пояснение кода выглядит следующим образом.
Установка булавки в качестве входа
Начнем сначала с ввода. Как уже говорилось ранее, чтобы прочитать статус порта, его нужно установить как вход. Поэтому, поскольку мы выбрали P1.6 в качестве вывода переключателя входа, мы обозначили его в следующей строке фрагмента кода.
#define SW P16
Этот же вывод нужно установить как вход. Таким образом, в функции настройки вывод устанавливается как вход, используя строку ниже.
недействительная настройка (недействительна) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Эта строка P16_Input_Mode; определен в заголовочном файле Function_define.h в «библиотеке включений BSP», которая устанавливает бит вывода как P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . SET_BIT6 также определяется в том же файле заголовка как-
#define SET_BIT6 0x40
Установка контактов в качестве выхода
Как и входной контакт, выходной контакт, который используется встроенным тестовым светодиодом и внешним светодиодом1, также определяется в первом разделе кода с соответствующими PIN-кодами.
#define Test_LED P14 #define LED1 P15
Эти контакты устанавливаются как выход в функции настройки, используя следующие строки.
недействительная настройка (недействительна) { P14_Quasi_Mode; // Вывод P15_Quasi_Mode; // Вывод P16_Input_Mode; }
Эти строки также определены в файле заголовка Function_define.h, где он устанавливает бит вывода как P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . SET_BIT6 также определяется в том же файле заголовка как-
#define SET_BIT4 0x10
Бесконечный цикл while
Аппаратное обеспечение, если оно подключено к источнику питания и работает безупречно и должно обеспечивать непрерывную работу, приложение никогда не останавливается. Он делает то же самое бесконечное количество раз. А вот и функция бесконечного цикла while. Приложение внутри цикла while работает бесконечно.
в то время как (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); если (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
Вышеупомянутый цикл while мигает светодиодом в соответствии со значением sw_delay, а также проверяет состояние SW. Если переключатель нажат, P1.6 будет в высоком уровне, и, таким образом, когда он будет нажат, статус чтения будет 1. В этой ситуации в течение некоторого времени переключатель нажат, а порт P1.6 остается высоким, LED1 загорится.
Программирование N76E003 и проверка вывода
В нашем руководстве по началу работы с N76E003 мы уже узнали, как программировать N76E003, поэтому мы просто повторим те же шаги здесь, чтобы запрограммировать нашу плату. Код был успешно скомпилирован и вернул 0 предупреждений и 0 ошибок и прошился с использованием метода прошивки по умолчанию Keil.
Как вы можете видеть на изображении выше, наш внешний светодиод включается, когда я нажимаю кнопку. Полную работу проекта можно посмотреть в видео по ссылке ниже. Надеюсь, вам понравился урок и вы узнали что-то полезное, если у вас есть какие-либо вопросы, оставьте их в разделе комментариев ниже. Вы также можете использовать наши форумы, чтобы задать другие технические вопросы.