- Налаштування обладнання та вимоги
- N76E003 Світлодіодна та кнопкова інтерфейсна схема
- N76E003 Діаграма розпізнавання
- Проста програма управління GPIO для N76E003
- Програмування N76E003 та перевірка вихідних даних
У нашому попередньому навчальному посібнику ми використовували основну програму, яка блимає світлодіодами, для початку роботи з керівництвом N76E003, ми вже дізналися, як налаштувати IDE Keil та налаштувати середовище для програмування мікроконтролера Nuvoton N76E003. Настав час рухатись трохи далі і використовувати базовий інтерфейс GPIO для управління додатковим обладнанням. Якщо ви зацікавлені, ви можете також переглянути інші підручники з мікроконтролера GPIO, перелічені нижче -
- STM32 Nucleo64 з CubeMx та TrueSTUDIO - світлодіодне управління
- STM8S з контролем Cosmic C GPIO
- PIC із підручником для блимання світлодіодних ламп MPLABX
- MSP430 з Code Composer Studio - просте світлодіодне управління
Оскільки в нашому попередньому навчальному посібнику ми використовували лише світлодіод для того, щоб блимати, використовуючи вивід IO як вихід. У цьому підручнику ми дізнаємося, як використовувати інший вивід вводу-виводу як вхід і управляти додатковим світлодіодом. Не витрачаючи багато часу, давайте оцінимо, яке обладнання для налаштування нам потрібно.
Налаштування обладнання та вимоги
Оскільки комутатор потрібно використовувати як вхід, перше, що нам потрібно, це кнопка. Нам також потрібен додатковий світлодіод, яким можна керувати за допомогою цієї кнопки. Окрім цих двох, нам також потрібен резистор для обмеження світлодіодного струму та додатковий резистор для випадаючих цілей через кнопку. Це буде далі продемонстровано у розділі схеми. Компоненти, які нам потрібні -
- Кнопка (будь-який моментний перемикач, зокрема - тактильний перемикач)
- Будь-який колір світлодіода
- 4.7k резистор для розкривних цілей
- Резистор 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); Тест_LED = 1; sw_delay (150); якщо (SW == 1) {LED1 = 0; } ще {світлодіод1 = 1; }}}
Наведений вище цикл while блимає світлодіодом відповідно до значення sw_delay, а також перевіряє статус SW. Якщо натиснути перемикач, P1.6 буде високим, і, отже, при натисканні стан зчитування буде 1. У цій ситуації на час натискання перемикача і порту P1.6 залишається високим, LED1 світиться.
Програмування N76E003 та перевірка вихідних даних
У нашому Приступаючи до роботи з N76E003 уроку ми навчилися програмувати N76E003 вже, так що ми будемо просто повторювати ті ж самі кроки тут, щоб запрограмувати нашу дошку. Код успішно скомпільовано і повернуто 0 попереджень та 0 помилок і прошито за допомогою методу прошивки за замовчуванням за допомогою Keil.
Як ви можете бачити на зображенні вище, наш зовнішній світлодіод загоряється, коли я натискаю кнопку. Повну роботу проекту можна знайти у відео, наведеному нижче. Сподіваюся, вам сподобався підручник і ви дізнались щось корисне, якщо у вас виникли запитання, залиште їх у розділі коментарів нижче. Ви також можете використовувати наші форуми, щоб задати інші технічні питання.