- Hardware-installatie en vereisten
- N76E003 LED en drukknopinterfacecircuit
- N76E003 Pin-out-diagram
- Eenvoudig GPIO-besturingsprogramma voor N76E003
- N76E003 programmeren en uitvoer verifiëren
In onze vorige tutorial hebben we een basisprogramma voor het knipperen van LED's gebruikt om aan de slag te gaan met de N76E003- gids, we hebben al geleerd hoe we de Keil IDE moeten configureren en de omgeving moeten instellen voor het programmeren van de nuvoton-microcontrollereenheid N76E003. Het is tijd om een beetje verder te gaan en de standaard GPIO-interface te gebruiken voor het besturen van extra hardware. Als je geïnteresseerd bent, kun je ook andere GPIO-tutorials van de microcontroller bekijken die hieronder worden vermeld:
- STM32 Nucleo64 met CubeMx en TrueSTUDIO - LED-besturing
- STM8S met Cosmic C GPIO-besturing
- PIC met MPLABX LED Blink Tutorial
- MSP430 met Code Composer Studio - Eenvoudige LED-bediening
Omdat we in onze vorige tutorial alleen een LED hebben gebruikt om te knipperen door een IO-pin als uitgang te gebruiken. In deze tutorial leren we hoe we een andere IO-pin als input kunnen gebruiken en een extra LED kunnen besturen. Laten we, zonder veel tijd te verspillen, eens kijken wat voor soort hardware-instellingen we nodig hebben.
Hardware-installatie en vereisten
Omdat een schakelaar als ingang moet worden gebruikt, is het eerste dat we nodig hebben een drukknop. We hebben ook een extra LED nodig die met die drukknop kan worden bediend. Behalve deze twee hebben we ook een weerstand nodig om de LED-stroom te beperken en een extra weerstand voor de pull-down-doeleinden over de drukknop. Dit wordt verder gedemonstreerd in het schematische gedeelte. De componenten die we nodig hebben -
- Een drukknop (specifiek elk soort momentschakelaar - tactiele schakelaar)
- Elke kleur van de LED
- 4.7k weerstand voor pull-down doeleinden
- 100R weerstand
Om nog maar te zwijgen over de bovenstaande componenten: we hebben een N76E003 microcontroller- based development board nodig, evenals de Nu-Link Programmer. Bovendien zijn ook breadboard- en aansluitdraden vereist voor het aansluiten van alle componenten, zoals hieronder weergegeven.
N76E003 LED en drukknopinterfacecircuit
Zoals we in het onderstaande schema kunnen zien, is de test-LED die zich in het ontwikkelbord bevindt, aangesloten op poort 1.4 en is een extra LED aangesloten op poort 1.5. De weerstand R3 wordt gebruikt om de LED-stroom te begrenzen.
Op pin 1.6 is een drukknop met de naam SW aangesloten. Telkens wanneer de knop wordt ingedrukt, wordt de pin hoog. Anders wordt het laag door de 4.7K pull-down-weerstand R1. U kunt meer leren over pull-up- en pull-down-weerstanden als u nieuw bent met dit concept.
De pin is ook een programma-gerelateerde pin waartoe de programmeur toegang heeft. Het wordt gebruikt om programmagegevens te verzenden. We zullen echter de reden achter het selecteren van die pinnen zien en eerlijke informatie krijgen over de pintoewijzing van de N76E003.
N76E003 Pin-out-diagram
Het pin-diagram van N76E003 is te zien in de onderstaande afbeelding-
Zoals we kunnen zien, heeft elke pin meerdere functies en kan deze voor verschillende doeleinden worden gebruikt. Laten we een voorbeeld nemen. De pin 1.7 kan worden gebruikt als een interrupt of analoge ingang of als een algemene invoer-uitvoerbewerking. Dus als een pin wordt gebruikt als I / O-pinnen, is de betreffende functionaliteit niet beschikbaar.
Hierdoor verliest de pin 1.5 die wordt gebruikt als een LED-uitgangspen de PWM en andere functionaliteit. Maar dat is geen probleem, want voor dit project is geen andere functionaliteit vereist. De reden achter het kiezen van pin 1.5 als output en pin 1.6 als input, vanwege de dichtstbijzijnde beschikbaarheid van GND- en VDD-pinnen voor eenvoudige aansluiting.
In deze microcontroller van 20 pinnen kunnen echter 18 pinnen worden gebruikt als GPIO-pin. De pin 2.0 wordt speciaal gebruikt voor reset-invoer en kan niet als uitvoer worden gebruikt. Behalve deze pin kunnen alle pinnen worden geconfigureerd in de hieronder beschreven modus.
Volgens het gegevensblad zijn PxM1.n en PxM2.n twee registers die worden gebruikt om de besturingswerking van de I / O-poort te bepalen. Nu is het schrijven en lezen van een GPIO-poort iets heel anders. Omdat schrijven naar een poortcontroleregister de vergrendelingsstatus van de poort verandert, terwijl het lezen van de poort de status van de logische toestand krijgt. Maar om een poort te kunnen lezen, moet deze in een invoermodus worden gezet.
Eenvoudig GPIO-besturingsprogramma voor N76E003
Het complete programma dat in deze tutorial wordt gebruikt, vindt u onderaan deze pagina, de uitleg van de code is als volgt.
De pin instellen als input
Laten we eerst beginnen met de invoer. Zoals eerder besproken, moet de status van een poort worden ingesteld als invoer om de status van een poort te kunnen lezen. Daarom, omdat we P1.6 hebben geselecteerd als onze ingangsschakelaarpen, hebben we deze aangegeven via de onderstaande regel met codefragment.
# definiëren SW P16
Deze zelfde pin moet als input worden ingesteld. Bij de setup-functie wordt de pin dus als invoer ingesteld met behulp van de onderstaande regel.
ongeldige setup (ongeldig) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Deze regel P16_Input_Mode; wordt gedefinieerd in het Function_define.h header-bestand in de "BSP include-bibliotheek" die de pinbit instelt als P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . De SET_BIT6 wordt ook gedefinieerd in hetzelfde headerbestand als-
# definiëren SET_BIT6 0x40
De pinnen instellen als uitvoer
Hetzelfde als de invoerpin, wordt de outputpin die wordt gebruikt door de ingebouwde test-LED en de externe LED1 ook gedefinieerd in het eerste deel van de code met de respectieve PIN-codes.
#define Test_LED P14 #define LED1 P15
Die pinnen worden ingesteld als een uitvoer in de setup-functie met behulp van de onderstaande regels.
ongeldige setup (ongeldig) { P14_Quasi_Mode; // Uitgang P15_Quasi_Mode; // Uitgang P16_Input_Mode; }
Deze regels zijn ook gedefinieerd in het Function_define.h header-bestand waar het de pin bit instelt als P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . De SET_BIT6 wordt ook gedefinieerd in hetzelfde headerbestand als-
# definiëren SET_BIT4 0x10
Oneindige While-lus
Een hardware, indien aangesloten op de stroom en perfect werkend die continu output zou moeten geven, stopt de applicatie nooit. Het doet oneindig veel tijden hetzelfde. Hier komt de functie van een oneindige while-lus. De applicatie binnen de while-lus werkt oneindig.
while (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } anders {LED1 = 1; }}}
De bovenstaande while-lus laat de led knipperen volgens de sw_delay- waarde en controleert ook de status van de SW. Als de schakelaar wordt ingedrukt, zal de P1.6 hoog zijn, en dus wanneer deze wordt ingedrukt, zal de leesstatus 1 zijn. In deze situatie wordt de schakelaar tijdelijk ingedrukt en blijft de poort P1.6 hoog, de LED1 gaat branden.
N76E003 programmeren en uitvoer verifiëren
In onze tutorial ' Aan de slag met de N76E003' hebben we al geleerd hoe we de N76E003 moeten programmeren, dus we herhalen dezelfde stappen hier om ons bord te programmeren. De code is met succes gecompileerd en heeft 0 waarschuwing en 0 fouten geretourneerd en geflitst met behulp van de standaard knippermethode van de Keil.
Zoals je kunt zien in de bovenstaande afbeelding, gaat onze externe LED aan als ik op de drukknop druk. De volledige werking van het project is te vinden in de onderstaande video. Ik hoop dat je de tutorial leuk vond en iets nuttigs hebt geleerd als je vragen hebt, laat ze achter in het commentaargedeelte hieronder. U kunt ook onze forums gebruiken om andere technische vragen te stellen.