- Opsætning og krav til hardware
- N76E003 LED og trykknap interface kredsløb
- N76E003 Pin-Out-diagram
- Simpel GPIO kontrolprogram til N76E003
- Programmering af N76E003 og kontrol af output
I vores tidligere vejledning brugte vi et grundlæggende LED-blinkende program som en start med N76E003- guide, vi har allerede lært, hvordan man konfigurerer Keil IDE og indstiller miljøet til programmering af nuvoton-mikrocontroller- enheden N76E003. Det er tid til at bevæge sig lidt længere og bruge den grundlæggende GPIO-grænseflade til styring af yderligere hardware. Hvis du er interesseret, kan du også tjekke andre mikrokontroller GPIO-tutorials, der er angivet nedenfor-
- STM32 Nucleo64 med CubeMx og TrueSTUDIO - LED-kontrol
- STM8S med Cosmic C GPIO-kontrol
- PIC med MPLABX LED Blink Tutorial
- MSP430 med Code Composer Studio - Enkel LED-kontrol
Siden i vores tidligere tutorial brugte vi kun en LED til at blinke ved hjælp af en IO-pin som output. I denne vejledning lærer vi, hvordan man bruger en anden IO-pin som input og styring af en ekstra LED. Uden at spilde meget tid, lad os evaluere, hvilken slags hardwareopsætning vi har brug for.
Opsætning og krav til hardware
Da en switch skal bruges som input, er det første, vi har brug for, en trykknap. Vi kræver også en ekstra LED, der skal styres af den trykknap. Bortset fra disse to kræver vi også en modstand for at begrænse LED-strømmen og en ekstra modstand til nedtrapningsformål over trykknappen. Dette vil blive yderligere demonstreret i det skematiske afsnit. De komponenter, vi har brug for -
- En trykknap (enhver form for momentan kontakt specifikt - taktil switch)
- Enhver LED-farve
- 4,7 k modstand til nedtrapningsformål
- 100R modstand
For ikke at nævne, bortset fra ovenstående komponenter, har vi brug for N76E003 mikrokontroller- baseret udviklingskort såvel som Nu-Link Programmer. Derudover kræves der også brød- og tilslutningsledninger for at forbinde alle komponenter som vist nedenfor.
N76E003 LED og trykknap interface kredsløb
Som vi kan se i nedenstående skematisk, er test-LED'en inde i udviklingskortet tilsluttet på port 1.4, og en ekstra LED er forbundet på port 1.5. Modstanden R3 bruges til at begrænse LED-strømmen.
I pin 1.6 er en trykknap med navnet SW tilsluttet. Hver gang der trykkes på knappen, bliver stiften høj. Ellers bliver den lav af 4.7K -modstanden R1. Du kan lære mere om pull-up og pull-down modstande, hvis du er ny på dette koncept.
Stiften er også en programrelateret stift, som programmøren har adgang til. Det bruges til at sende programdata. Vi vil dog se årsagen til at vælge disse ben samt få retfærdig information om pin-kortlægning af N76E003.
N76E003 Pin-Out-diagram
Den pin diagram af N76E003 kan ses i nedenstående image-
Som vi kan se, har hver pin flere funktioner og kan bruges til forskellige formål. Lad os tage et eksempel. Stift 1.7 kan bruges som en interrupt- eller analogindgang eller som en almindelig input-output-operation. Således, hvis nogen ben bruges som I / O-ben, så er den respektive funktionalitet ikke tilgængelig.
På grund af dette mister pin 1.5, som bruges som en LED-output pin, PWM og anden funktionalitet. Men det er ikke et problem, da der ikke kræves en anden funktionalitet til dette projekt. Årsagen til at vælge pin 1.5 som output og pin 1.6 som input på grund af den nærmeste tilgængelighed af GND- og VDD-pins til nem tilslutning.
Imidlertid i denne mikrocontroller ud af 20 ben kan 18 ben bruges som en GPIO pin. Pin 2.0 bruges dedikeret til Reset input, og den kan ikke bruges som output. Bortset fra denne pin kan alle ben konfigureres i den nedenfor beskrevne tilstand.
I henhold til databladet er PxM1.n og PxM2.n to registre, der bruges til at bestemme I / O-portens kontrolfunktion. Nu er det en helt anden ting at komme til at skrive og læse en GPIO-port. Fordi skrivning til et portkontrolregister ændrer portens låsestatus, mens læsning af porten får status for den logiske tilstand. Men for at læse en port skal den sættes i en inputtilstand.
Simpel GPIO kontrolprogram til N76E003
Det komplette program, der bruges i denne vejledning, kan findes nederst på denne side, forklaringen på koden er som følger.
Indstilling af stiften som input
Lad os starte med input først. Som diskuteret lige før skal den indstilles som input for at læse status for en port. Derfor, da vi har valgt P1.6 som vores input switch pin, har vi markeret det gennem nedenstående linje med kodestykke.
#definer SW P16
Den samme pin skal indstilles som input. På opsætningsfunktionen indstilles stiften således som input ved hjælp af nedenstående linje.
ugyldig opsætning (ugyldig) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Denne linje P16_Input_Mode; er defineret i Function_define.h- headerfilen i "BSP include-biblioteket", der indstiller pin-bit som P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Den SET_BIT6 er også defineret i den samme header fil som-
#definer SET_BIT6 0x40
Indstilling af benene som output
Samme som input-pin, output-pin, der bruges af den indbyggede test-LED og den eksterne LED1, er også defineret i det første afsnit af koden med de respektive PIN-koder.
#definer test_LED P14 #definer LED1 P15
Disse ben indstilles som output i opsætningsfunktionen ved hjælp af nedenstående linjer.
ugyldig opsætning (ugyldig) { P14_Quasi_Mode; // Output P15_Quasi_Mode; // Output P16_Input_Mode; }
Disse linjer er også defineret i Function_define.h headerfilen, hvor den indstiller pin bit som P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Den SET_BIT6 er også defineret i den samme header fil som-
#definer SET_BIT4 0x10
Uendelig Mens løkke
En hardware, hvis applikationen er tilsluttet strømmen og fungerer perfekt, og som skal give output kontinuerligt, stopper applikationen aldrig. Det gør det samme i uendelige tider. Her kommer funktionen af en uendelig mens løkke. Applikationen inde i while-løkken kører uendeligt.
mens (1) { Test_LED = 0; sw_forsinkelse (150); Test_LED = 1; sw_forsinkelse (150); hvis (SW == 1) {LED1 = 0; } andet {LED1 = 1; }}}
Ovenstående mens løkke blinker ledet i henhold til sw_delay- værdien og kontrollerer også status for SW. Hvis der trykkes på kontakten, vil P1.6 være høj, og når der trykkes på den, vil aflæsningsstatus være 1. I denne situation, for den tid, trykkes på kontakten, og porten P1.6 forbliver høj, LED1 lyser.
Programmering af N76E003 og kontrol af output
I vores komme i gang med N76E003 tutorial lærte vi, hvordan vi allerede programmerede N76E003, så vi gentager bare de samme trin her for at programmere vores tavle. Koden blev kompileret med succes og returnerede 0 advarsler og 0 fejl og blinkede ved hjælp af standardblinkmetoden af Keil.
Som du kan se i ovenstående billede tændes vores eksterne LED, når jeg trykker på trykknappen. Den komplette bearbejdning af projektet kan findes i den linkede video nedenfor. Håber du har haft vejledningen og lært noget nyttigt, hvis du har spørgsmål, skal du lade dem være i kommentarfeltet nedenfor. Du kan også bruge vores fora til at stille andre tekniske spørgsmål.