- Hårdvaruinstallation och krav
- N76E003 LED och tryckknapps gränssnittskrets
- N76E003 Pin-Out-diagram
- Enkelt GPIO-kontrollprogram för N76E003
- Programmering av N76E003 och verifiering av utdata
I vår tidigare handledning använde vi ett grundläggande LED-blinkande program som en start med N76E003- guiden, vi har redan lärt oss hur man konfigurerar Keil IDE och ställer in miljön för programmering av nuvoton mikrokontroller N76E003. Det är dags att gå lite längre och använda det grundläggande GPIO-gränssnittet för att styra ytterligare hårdvara. Om du är intresserad kan du också kolla in andra mikrokontroller GPIO-handledning som listas nedan-
- STM32 Nucleo64 med CubeMx och TrueSTUDIO - LED-kontroll
- STM8S med Cosmic C GPIO-kontroll
- PIC med MPLABX LED Blink Tutorial
- MSP430 med Code Composer Studio - Enkel LED-kontroll
Sedan i vår tidigare handledning använde vi bara en LED för att blinka med hjälp av en IO-stift som utgång. I den här handledningen lär vi oss hur man använder en annan IO-stift som ingång och styr en extra LED. Utan att slösa mycket tid, låt oss utvärdera vilken typ av hårdvaruinstallation vi behöver.
Hårdvaruinstallation och krav
Eftersom en switch måste användas som ingång är det första vi behöver en tryckknapp. Vi kräver också en extra LED som styrs av den tryckknappen. Förutom dessa två kräver vi också ett motstånd för att begränsa LED-strömmen och ett ytterligare motstånd för neddragningsändamål över tryckknappen. Detta kommer att visas ytterligare i det schematiska avsnittet. Komponenterna vi behöver -
- En tryckknapp (vilken som helst typ av momentan omkopplare specifikt - Taktil switch)
- Vilken färg som helst på lysdioden
- 4,7 k motstånd för neddragningsändamål
- 100R motstånd
För att inte nämna, förutom ovanstående komponenter, behöver vi N76E003 mikrokontrollerbaserat utvecklingskort samt Nu-Link-programmeraren. Dessutom krävs paneler och anslutningskablar för anslutning av alla komponenter enligt nedan.
N76E003 LED och tryckknapps gränssnittskrets
Som vi kan se i schemat nedan är test-lysdioden som finns inuti utvecklingskortet ansluten till port 1.4 och en ytterligare lysdiod är ansluten till port 1.5. Motståndet R3 används för att begränsa LED-strömmen.
I stift 1.6 är en tryckknapp med namnet SW ansluten. Varje gång du trycker på knappen blir stiftet högt. Annars kommer det att bli låg vid 4.7K pull-down resistor R1. Du kan lära dig mer om pull-up och pull-down resistors om du är ny i detta koncept.
Stiftet är också en programrelaterad stift som nås av programmeraren. Den används för att skicka programdata. Vi kommer dock att se orsaken bakom valet av dessa stift samt få rättvis information om stiftmappningen av N76E003.
N76E003 Pin-Out-diagram
Den stiftschema av N76E003 kan ses i nedan bild-
Som vi kan se har varje stift flera funktioner och kan användas för olika ändamål. Låt oss ta ett exempel. Stiftet 1.7 kan användas som en avbrotts- eller analogingång eller som en allmänt användningsingång. Således, om någon stift används som I / O-stift, kommer respektive funktion inte att vara tillgänglig.
På grund av detta, stiftet 1.5 som används som en LED-utgångsstift, kommer den att förlora PWM och andra funktioner. Men det är inte ett problem eftersom det inte krävs någon annan funktionalitet för detta projekt. Anledningen till att välja stift 1.5 som utgång och stift 1.6 som ingång, på grund av närmaste tillgänglighet av GND- och VDD-stift för enkel anslutning.
I denna mikrokontroller av 20 stift kan dock 18 stift användas som en GPIO-stift. Stift 2.0 används dedikerat för Återställ ingång och det kan inte användas som utgång. Förutom denna stift kan alla stift konfigureras i det nedan beskrivna läget.
Enligt databladet är PxM1.n och PxM2.n två register som används för att bestämma styrningen av I / O-porten. Nu är det en helt annan sak att skriva och läsa en GPIO-port. Eftersom skrivning till ett portkontrollregister ändrar portens spärrtillstånd, medan läsning av porten får status för det logiska tillståndet. Men för att läsa en port måste den ställas in i inmatningsläge.
Enkelt GPIO-kontrollprogram för N76E003
Det kompletta programmet som används i denna handledning finns längst ner på denna sida, förklaringen till koden är som följer.
Ställer in stiftet som ingång
Låt oss börja med ingången först. Som diskuterats precis innan, för att läsa status för en port, måste den ställas in som ingång. Därför, eftersom vi har valt P1.6 som vår ingångsbrytare, har vi angett det genom nedanstående rad med kodavsnitt.
#definiera SW P16
Samma stift måste ställas in som ingång. På inställningsfunktionen ställs således stiftet in som ingång med hjälp av nedanstående rad.
ogiltig installation (ogiltig) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Denna rad P16_Input_Mode; definieras i Function_define.h- rubrikfilen i "BSP include-biblioteket" som sätter stiftbiten som P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Den SET_BIT6 definieras också i samma sidhuvudfilen som-
#define SET_BIT6 0x40
Ställa in stiften som utgång
Samma som ingångsstiftet, utgångsstiftet som används av den inbyggda testlampan och den externa lysdioden definieras också i den första delen av koden med respektive PIN-koder.
#define Test_LED P14 #define LED1 P15
Dessa stift ställs in som en utgång i installationsfunktionen med hjälp av nedanstående rader.
ogiltig installation (ogiltig) { P14_Quasi_Mode; // Utgång P15_Quasi_Mode; // Utgång P16_Input_Mode; }
Dessa rader definieras också i rubrikfilen Function_define.h där den ställer in pinbiten som P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Den SET_BIT6 definieras också i samma sidhuvudfilen som-
#define SET_BIT4 0x10
Oändligt medan slinga
En hårdvara, om den är ansluten till strömmen och fungerar perfekt som ska ge output kontinuerligt, slutar applikationen aldrig. Det gör samma sak under oändliga tider. Här kommer funktionen av en oändlig loop. Applikationen inuti while-slingan går oändligt.
medan (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); om (SW == 1) {LED1 = 0; } annat {LED1 = 1; }}}
Ovanstående medan slingan blinkar ledningen enligt sw_delay- värdet och kontrollerar också statusen för SW. Om man trycker på omkopplaren kommer P1.6 att vara högt och därmed när den trycks in kommer lässtatusen att vara 1. I denna situation trycks omkopplaren under tiden och porten P1.6 förblir hög, LED1 lyser.
Programmering av N76E003 och verifiering av utdata
När vi kom igång med N76E003- tutorialen lärde vi oss hur man programmerar N76E003 redan, så vi upprepar bara samma steg här för att programmera vårt kort. Koden kompilerades framgångsrikt och returnerade 0 varning och 0 fel och blinkade med standardblinkningsmetoden av Keil.
Som du kan se i bilden ovan tänds vår externa lysdiod när jag trycker på tryckknappen. Det fullständiga arbetet med projektet finns i videon som länkas nedan. Hoppas att du gillade handledningen och lärde dig något användbart om du har några frågor, lämna dem i kommentarsektionen nedan. Du kan också använda våra forum för att ställa andra tekniska frågor.