- Хардуерна настройка и изисквания
- N76E003 Интерфейсна верига за LED и бутони
- N76E003 Диаграма на излизане
- Проста програма за управление на GPIO за N76E003
- Програмиране на N76E003 и проверка на изхода
В нашия предишен урок използвахме основна LED мигаща програма като начало с ръководството за N76E003, вече научихме как да конфигурираме IDE на Keil и да настроим среда за програмиране на микроконтролерния блок nuvoton N76E003. Време е да преминете малко по-напред и да използвате основния GPIO интерфейс за управление на допълнителен хардуер. Ако се интересувате, можете да проверите и други уроци за микроконтролер GPIO, които са изброени по-долу -
- STM32 Nucleo64 с CubeMx и TrueSTUDIO - LED управление
- STM8S с Cosmic C GPIO Control
- PIC с MPLABX LED мигащ урок
- MSP430 с Code Composer Studio - опростено светодиодно управление
Тъй като в нашия предишен урок, ние използвахме само светодиод, за да мига, използвайки IO щифт като изход. В този урок ще научим как да използваме друг IO щифт като вход и да управляваме допълнителен светодиод. Без да губим много време, нека да оценим какъв вид хардуерна настройка се нуждаем.
Хардуерна настройка и изисквания
Тъй като превключвателят трябва да се използва като вход, първото нещо, от което се нуждаем, е бутон. Също така се изисква допълнителен светодиод, който да се управлява от този бутон. Освен тези две, ние също изискваме резистор за ограничаване на светодиодния ток и допълнителен резистор за целите на изтеглянето през бутона. Това ще бъде допълнително демонстрирано в схематичния раздел. Компонентите, от които се нуждаем -
- Бутон (всякакъв вид моментни превключватели - тактилен превключвател)
- Всеки цвят на светодиода
- 4.7k резистор за падащи цели
- 100R резистор
Да не говорим, освен горепосочените компоненти, се нуждаем от N76E003 базирана на микроконтролер платка за разработка, както и Nu-Link Programmer. Освен това за свързване на всички компоненти, както е показано по-долу, са необходими и макетни плочи и кабели за свързване.
N76E003 Интерфейсна верига за LED и бутони
Както можем да видим в схемата по-долу, тестовият светодиод, който е вътре в платката за разработка, е свързан към порта 1.4 и допълнителен светодиод е свързан към порта 1.5. Резисторът R3 се използва за ограничаване на светодиодния ток.
В щифт 1.6 е свързан бутон с име SW. При всяко натискане на бутона, щифтът ще стане висок. В противен случай тя ще намалее от падащия резистор R1 с 4.7K. Можете да научите повече за изтеглящи и падащи резистори, ако сте нови в тази концепция.
ПИНът също е свързан с програма пин, който е достъпен от програмиста. Използва се за изпращане на програмни данни. Ще видим обаче причината за избора на тези щифтове, както и ще получим достоверна информация за картографирането на пиновете на N76E003.
N76E003 Диаграма на излизане
В щифт схема на N76E003 може да се види по-долу, пренасящ образ
Както виждаме, всеки щифт има множество функции и може да се използва за различни цели. Да вземем пример. Пинът 1.7 може да се използва като прекъсване или аналогов вход или като операция за вход-изход с общо предназначение. По този начин, ако някой пин се използва като I / O щифтове, тогава съответната функционалност няма да бъде налична.
Поради това, щифтът 1.5, който се използва като LED изходен щифт, ще загуби ШИМ и друга функционалност. Но това не е проблем, тъй като за този проект не се изисква друга функционалност. Причината за избора на пин 1.5 като изход и пин 1.6 като вход, поради най-близката наличност на GND и VDD щифтове за лесно свързване.
Въпреки това, в този микроконтролер от 20 пина, 18 пина могат да се използват като GPIO щифт. Пинът 2.0 се използва специално за нулиране на входа и не може да се използва като изход. Освен този щифт, всички щифтове могат да бъдат конфигурирани в описания по-долу режим.
Според листа с данни, PxM1.n и PxM2.n са два регистъра, които се използват за определяне на контролната операция на I / O порта. Сега стигането до писане и четене на GPIO порт е съвсем различно нещо. Тъй като записването в регистър за контрол на портове променя състоянието на заключване на порта, докато четенето на порта получава статус на логическо състояние. Но за четене на порт, той трябва да бъде настроен във входен режим.
Проста програма за управление на GPIO за N76E003
Цялата програма, използвана в този урок, може да бъде намерена в долната част на тази страница, обяснението на кода е както следва.
Задаване на щифта като вход
Нека първо започнем с въвеждането. Както беше обсъдено малко преди, за да се прочете състоянието на порт, той трябва да бъде зададен като вход. Следователно, тъй като ние избрахме P1.6 като наш входен превключвател, ние го обозначихме през долния ред на кодов фрагмент.
#define SW P16
Същият този щифт трябва да бъде зададен като вход. По този начин, на функцията за настройка, щифтът се задава като вход, като се използва долният ред.
настройка на невалидни (void) {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, също е дефиниран в първия раздел на кода със съответните ПИН кодове.
#define Test_LED P14 #define LED1 P15
Тези щифтове се задават като изход във функцията за настройка, като се използват долните редове.
настройка на невалидни (void) { 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 работи безкрайно.
докато (1) { Test_LED = 0; sw_delay (150); Тест_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.
Както можете да видите на горното изображение, нашият външен светодиод се включва, когато натисна бутона. Пълната работа на проекта може да бъде намерена във видеото, свързано по-долу. Надявам се, че ви е харесал урокът и сте научили нещо полезно, ако имате въпроси, оставете ги в раздела за коментари по-долу. Можете също да използвате нашите форуми, за да задавате други технически въпроси.