- Maskinvareoppsett og krav
- N76E003 LED og trykknappgrensesnittkrets
- N76E003 Pin-Out-diagram
- Enkelt GPIO-kontrollprogram for N76E003
- Programmering av N76E003 og verifisering av utdata
I vår forrige opplæring brukte vi et grunnleggende LED-blinkende program som å komme i gang med N76E003- veiledningen. Vi har allerede lært hvordan du konfigurerer Keil IDE og setter opp miljøet for programmering av nuvoton mikrokontrollerenheten N76E003. Det er på tide å bevege seg litt lenger og bruke det grunnleggende GPIO-grensesnittet for å kontrollere ekstra maskinvare. Hvis du er interessert, kan du også sjekke andre mikrokontroller GPIO-opplæringsprogrammer som er oppført nedenfor -
- STM32 Nucleo64 med CubeMx og TrueSTUDIO - LED-kontroll
- STM8S med Cosmic C GPIO-kontroll
- PIC med MPLABX LED Blink Tutorial
- MSP430 med Code Composer Studio - Enkel LED-kontroll
Siden i vår forrige opplæring brukte vi bare en LED til å blinke ved å bruke en IO-pinne som utgang. I denne opplæringen vil vi lære hvordan du bruker en annen IO-pinne som inngang og styrer en ekstra LED. Uten å kaste bort mye tid, la oss evaluere hva slags maskinvareoppsett vi trenger.
Maskinvareoppsett og krav
Ettersom en bryter må brukes som inngang, er det første vi trenger en trykknapp. Vi krever også at en ekstra LED styres av trykknappen. Bortsett fra disse to, krever vi også en motstand for å begrense LED-strømmen og en ekstra motstand for nedtrekksformålet over trykknappen. Dette vil bli ytterligere demonstrert i skjematisk del. Komponentene vi trenger -
- En trykknapp (hvilken som helst form for øyeblikkelig bryter spesielt - Taktil bryter)
- Enhver farge på LED-lampen
- 4,7 k motstand for nedtrekksformål
- 100R motstand
For ikke å nevne, bortsett fra de ovennevnte komponentene, trenger vi N76E003 mikrokontrollerbasert utviklingskort, samt Nu-Link Programmer. I tillegg kreves det også brødbrett- og tilkoblingsledninger for å koble til alle komponentene som vist nedenfor.
N76E003 LED og trykknappgrensesnittkrets
Som vi kan se i skjematisk nedenfor, er test-LED-en som er inne i utviklingskortet koblet til porten 1.4 og en ekstra LED-forbindelse er koblet til porten 1.5. Motstanden R3 brukes til å begrense LED-strømmen.
I pin 1.6 er en trykknapp med navnet SW koblet til. Hver gang du trykker på knappen, blir pinnen høy. Ellers blir den lav av 4,7 K nedtrekkingsmotstand R1. Du kan lære mer om opptrekks- og nedtrekksmotstander hvis du er ny i dette konseptet.
Pinnen er også en programrelatert pinne som programmereren får tilgang til. Den brukes til å sende programdata. Vi vil imidlertid se årsaken bak å velge disse pinnene, samt få rettferdig informasjon om pin-kartleggingen av N76E003.
N76E003 Pin-Out-diagram
Den tapp diagram av N76E003 kan sees i den nedenfor bilde-
Som vi kan se, har hver pin flere funksjoner og kan brukes til forskjellige formål. La oss ta et eksempel. Pinnen 1.7 kan brukes som en avbrudd eller analog inngang eller som en generell inngangs- og utgangsoperasjon. Dermed, hvis noen pinner brukes som I / O-pinner, vil den respektive funksjonaliteten ikke være tilgjengelig.
På grunn av dette, minner pinnen 1.5 som brukes som en LED-utgangsnål, PWM og annen funksjonalitet. Men det er ikke et problem da det ikke kreves en annen funksjonalitet for dette prosjektet. Årsaken bak å velge pin 1.5 som utgang og pin 1.6 som inngang, på grunn av den nærmeste tilgjengeligheten av GND og VDD-pinner for enkel tilkobling.
Imidlertid, i denne mikrokontrolleren av 20 pinner, kan 18 pinner brukes som en GPIO-pinne. Pinnen 2.0 brukes dedikert til Reset-inngang, og den kan ikke brukes som utgang. Annet enn denne pinnen, kan alle pinnene konfigureres i den nedenfor beskrevne modusen.
I henhold til databladet er PxM1.n og PxM2.n to registre som brukes til å bestemme kontrolloperasjonen til I / O-porten. Nå, å komme til å skrive og lese en GPIO-port er en helt annen ting. Fordi skriving til et portkontrollregister endrer portens låsingstilstand, mens lesing av porten får status som logisk tilstand. Men for å lese en port, må den settes i inndatamodus.
Enkelt GPIO-kontrollprogram for N76E003
Det komplette programmet som brukes i denne veiledningen finner du nederst på denne siden, forklaringen på koden er som følger.
Angi pinnen som inngang
La oss starte med inngangen først. Som diskutert like før, for å lese statusen til en port, må den settes som inngang. Derfor, da vi har valgt P1.6 som inngangsbryterpinne, har vi betegnet det gjennom nedenstående linje med kodebit.
#definer SW P16
Den samme pinnen må settes som inngang. Dermed settes pinnen på oppsettfunksjonen som inngang ved hjelp av linjen nedenfor.
ugyldig oppsett (ugyldig) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Denne linjen P16_Input_Mode; er definert i Function_define.h header-filen i "BSP include-biblioteket" som setter pin-biten som P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Den SET_BIT6 er også definert i den samme topptekstfilen som-
#define SET_BIT6 0x40
Angi pinnene som utgang
Samme som inngangspinnen, utgangspinnen som brukes av den innebygde test-LED-en og den eksterne LED-en, er også definert i den første delen av koden med de respektive PIN-kodene.
#define Test_LED P14 #define LED1 P15
Disse pinnene er satt som en utgang i oppsettfunksjonen ved hjelp av linjene nedenfor.
ugyldig oppsett (ugyldig) { P14_Quasi_Mode; // Utgang P15_Quasi_Mode; // Utgang P16_Input_Mode; }
Disse linjene er også definert i Function_define.h header-filen der den setter pin-biten som P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Den SET_BIT6 er også definert i den samme topptekstfilen som-
#definer SET_BIT4 0x10
Uendelig Mens løkke
En maskinvare, hvis den er koblet til strømmen og fungerer perfekt som skal gi utgang kontinuerlig, stopper applikasjonen aldri. Det gjør det samme i uendelige tider. Her kommer funksjonen til en uendelig mens løkke. Søknaden inne i mens loop går uendelig.
mens (1) { Test_LED = 0; sw_forsinkelse (150); Test_LED = 1; sw_forsinkelse (150); hvis (SW == 1) {LED1 = 0; } annet {LED1 = 1; }}}
Ovenstående mens sløyfe blinker ledet i henhold til verdien sw_delay og sjekker også statusen til SW. Hvis bryteren trykkes inn, vil P1.6 være høy, og når den trykkes inn, vil lesestatusen være 1. I denne situasjonen, for tiden, trykkes bryteren og porten P1.6 forblir høy, LED1 vil lyse.
Programmering av N76E003 og verifisering av utdata
Da vi kom i gang med N76E003- opplæringen, lærte vi å programmere N76E003 allerede, så vi vil bare gjenta de samme trinnene her for å programmere styret vårt. Koden ble samlet og returnerte 0 advarsler og 0 feil og blinket ved hjelp av standard blinkemetode av Keil.
Som du kan se på bildet ovenfor, tennes vår eksterne LED når jeg trykker på trykknappen. Fullstendig arbeid av prosjektet finner du i videoen som er lenket nedenfor. Håper du likte opplæringen og lærte noe nyttig hvis du har spørsmål, legg dem i kommentarseksjonen nedenfor. Du kan også bruke forumene våre til å stille andre tekniske spørsmål.