- Konfiguracja sprzętu i wymagania
- N76E003 Dioda LED i obwód interfejsu przycisku
- Schemat styków N76E003
- Prosty program sterowania GPIO dla N76E003
- Programowanie N76E003 i weryfikacja wyjścia
W naszym poprzednim samouczku użyliśmy podstawowego programu do migania diod LED jako przewodnika wprowadzającego do N76E003, nauczyliśmy się już, jak skonfigurować Keil IDE i ustawić środowisko do programowania mikrokontrolera N76E003 firmy nuvoton. Pora pójść trochę dalej i wykorzystać podstawowy interfejs GPIO do sterowania dodatkowym sprzętem. Jeśli jesteś zainteresowany, możesz również zapoznać się z innymi samouczkami GPIO mikrokontrolera, które są wymienione poniżej:
- STM32 Nucleo64 z CubeMx i TrueSTUDIO - sterowanie LED
- STM8S ze sterowaniem Cosmic C GPIO
- PIC z samouczkiem MPLABX LED Blink
- MSP430 z Code Composer Studio - proste sterowanie diodami LED
Ponieważ w naszym poprzednim samouczku używaliśmy tylko diody LED do migania przy użyciu styku IO jako wyjścia. W tym samouczku nauczymy się, jak używać innego pinu IO jako wejścia i sterować dodatkową diodą LED. Nie tracąc dużo czasu, oceńmy, jakiego rodzaju sprzętu potrzebujemy.
Konfiguracja sprzętu i wymagania
Ponieważ przełącznik musi być używany jako wejście, pierwszą rzeczą, której potrzebujemy, jest przycisk. Wymagamy również dodatkowej diody LED do sterowania za pomocą tego przycisku. Oprócz tych dwóch potrzebujemy również rezystora ograniczającego prąd diody LED i dodatkowego rezystora do obniżania poziomu na przycisku. Zostanie to dalej zademonstrowane w sekcji schematu. Wymagane przez nas komponenty -
- Przycisk (w szczególności dowolny rodzaj przełącznika chwilowego - przełącznik dotykowy)
- Dowolny kolor diody LED
- Rezystor 4,7 k do celów obniżania
- Rezystor 100R
Nie wspominając o tym, że poza powyższymi komponentami potrzebujemy płyty rozwojowej opartej na mikrokontrolerze N76E003 oraz programatorze Nu-Link. Ponadto do podłączenia wszystkich komponentów wymagane są również przewody płytki stykowej i przewody połączeniowe, jak pokazano poniżej.
N76E003 Dioda LED i obwód interfejsu przycisku
Jak widać na poniższym schemacie, testowa dioda LED znajdująca się wewnątrz płytki rozwojowej jest podłączona do portu 1.4, a dodatkowa dioda jest podłączona do portu 1.5. Rezystor R3 służy do ograniczenia prądu diody LED.
Do pinu 1.6 podłączony jest przycisk o nazwie SW. Za każdym naciśnięciem przycisku kołek stanie się wysoki. W przeciwnym razie będzie niski przez rezystor obniżający 4,7K R1. Możesz dowiedzieć się więcej o rezystorach pull-up i pull-down, jeśli jesteś nowy w tej koncepcji.
Pin jest również pinem związanym z programem, do którego programista ma dostęp. Służy do przesyłania danych programu. Jednak zobaczymy powód wyboru tych pinów, a także uzyskamy rzetelne informacje o mapowaniu pinów N76E003.
Schemat styków N76E003
Schemat sworzeń N76E003 widać poniżej image-
Jak widać, każdy pin ma wiele funkcji i może być używany do różnych celów. Weźmy przykład. Pin 1.7 może być używany jako przerwanie, wejście analogowe lub jako operacja wejścia-wyjścia ogólnego przeznaczenia. Tak więc, jeśli jakikolwiek pin zostanie użyty jako piny I / O, wówczas odpowiednia funkcjonalność nie będzie dostępna.
Z tego powodu pin 1.5, który jest używany jako pin wyjściowy LED, utraci PWM i inne funkcje. Nie stanowi to jednak problemu, ponieważ w tym projekcie nie jest wymagana inna funkcjonalność. Powód wyboru pinu 1.5 jako wyjścia i pinu 1.6 jako wejścia, ze względu na najbliższą dostępność pinów GND i VDD dla łatwego podłączenia.
Jednak w tym mikrokontrolerze z 20 pinów, 18 pinów może służyć jako pin GPIO. Pin 2.0 jest dedykowany do wejścia Reset i nie może być używany jako wyjście. Poza tym pinem wszystkie piny można skonfigurować w opisanym poniżej trybie.
Zgodnie z arkuszem danych, PxM1.n i PxM2.n to dwa rejestry, które są używane do określenia operacji sterowania portem I / O. Teraz pisanie i czytanie portu GPIO to zupełnie inna sprawa. Ponieważ zapis do rejestru sterującego portem zmienia stan zatrzasku portu, podczas gdy odczyt portu uzyskuje status stanu logicznego. Ale aby odczytać port, należy ustawić go w tryb wejściowy.
Prosty program sterowania GPIO dla N76E003
Kompletny program użyty w tym samouczku można znaleźć na dole tej strony, a wyjaśnienie kodu jest następujące.
Ustawiam pin jako wejście
Zacznijmy najpierw od danych wejściowych. Jak wspomniano wcześniej, aby odczytać stan portu, należy go ustawić jako wejście. Dlatego, ponieważ wybraliśmy P1.6 jako nasz pin przełącznika wejścia, oznaczyliśmy go w poniższym wierszu fragmentu kodu.
# zdefiniować SW P16
Ten sam pin należy ustawić jako wejście. Tak więc w funkcji konfiguracji pin jest ustawiany jako wejście za pomocą poniższej linii.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Ta linia P16_Input_Mode; jest zdefiniowany w pliku nagłówkowym Function_define.h w „BSP include library”, która ustawia bit pinu jako P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . SET_BIT6 jest również zdefiniowane w tym samym pliku nagłówka as-
# zdefiniować SET_BIT6 0x40
Ustawienie pinów jako wyjścia
Podobnie jak styk wejściowy, styk wyjściowy używany przez wbudowaną diodę LED testu i zewnętrzną diodę LED1 jest również zdefiniowany w pierwszej sekcji kodu za pomocą odpowiednich kodów PIN.
# zdefiniować Test_LED P14 # zdefiniować LED1 P15
Te piny są ustawiane jako wyjścia w funkcji konfiguracji za pomocą poniższych linii.
void setup (void) { P14_Quasi_Mode; // Wyjście P15_Quasi_Mode; // Wyjście P16_Input_Mode; }
Te wiersze są również zdefiniowane w pliku nagłówkowym Function_define.h , gdzie ustawia bit pinu jako P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . SET_BIT6 jest również zdefiniowane w tym samym pliku nagłówka as-
# zdefiniować SET_BIT4 0x10
Nieskończona pętla While
Sprzęt, jeśli jest podłączony do zasilania i działa idealnie, co powinno dawać ciągłe wyjście, aplikacja nigdy się nie zatrzymuje. Robi to samo przez nieskończone czasy. Oto funkcja nieskończonej pętli while. Aplikacja wewnątrz pętli while działa w nieskończoność.
podczas gdy (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
Powyższa pętla while miga diodą LED zgodnie z wartością sw_delay, a także sprawdza stan SW. Wciśnięcie przełącznika spowoduje, że P1.6 będzie w stanie wysokim, a więc po jego wciśnięciu stan odczytu będzie wynosił 1. W tej sytuacji przez czas wciśnięty wyłącznik i port P1.6 pozostanie w stanie wysokim, Dioda LED1 zaświeci się.
Programowanie N76E003 i weryfikacja wyjścia
W naszym samouczku rozpoczynającym pracę z N76E003 nauczyliśmy się już programować N76E003, więc powtórzymy te same kroki, aby zaprogramować naszą płytkę. Kod został pomyślnie skompilowany i zwrócił 0 ostrzeżeń i 0 błędów oraz błysnął przy użyciu domyślnej metody flashowania przez Keil.
Jak widać na powyższym obrazku, nasza zewnętrzna dioda LED włącza się po naciśnięciu przycisku. Pełne działanie projektu można znaleźć w poniższym wideo. Mam nadzieję, że spodobał Ci się samouczek i nauczyłeś się czegoś przydatnego, jeśli masz jakieś pytania, zostaw je w sekcji komentarzy poniżej. Możesz również skorzystać z naszych forów, aby zadać inne pytania techniczne.