- Configuració i requisits de maquinari
- N76E003 Circuit d'interfície de botons i LED
- N76E003 Diagrama Pin-Out
- Programa de control GPIO simple per a N76E003
- Programació N76E003 i verificació de la sortida
En el nostre tutorial anterior, vam utilitzar un programa bàsic de parpelleig de LED com a guia inicial per a N76E003, ja vam aprendre a configurar el Keil IDE i configurar l’entorn per programar la unitat de microcontrolador Nuvoton N76E003. És el moment d’avançar una mica més i utilitzar la interfície bàsica GPIO per controlar maquinari addicional. Si esteu interessats, també podeu consultar altres tutorials GPIO sobre microcontroladors que es detallen a continuació.
- STM32 Nucleo64 amb CubeMx i TrueSTUDIO - control LED
- STM8S amb Cosmic C GPIO Control
- PIC amb MPLABX LED Tutorial de parpelleig
- MSP430 amb Code Composer Studio: control LED senzill
Com que en el nostre tutorial anterior, només utilitzàvem un LED per parpellejar fent servir un pin IO com a sortida. En aquest tutorial, aprendrem a utilitzar un altre pin IO com a entrada i controlar un LED addicional. Sense perdre molt de temps, avaluem quin tipus de configuració de maquinari necessitem.
Configuració i requisits de maquinari
Com que cal utilitzar un commutador com a entrada, el primer que necessitem és un polsador. També necessitem un LED addicional que es pugui controlar mitjançant aquest polsador. A part d'aquests dos, també necessitem una resistència per limitar el corrent de LED i una resistència addicional per als efectes desplegables a través del polsador. Això es demostrarà a la secció esquemàtica. Els components que necessitem -
- Un polsador (qualsevol tipus d'interruptor momentani específicament: interruptor tàctil)
- Qualsevol color del LED
- Resistència de 4,7 k per a fins desplegables
- Resistència 100R
Per no mencionar, a part dels components anteriors, necessitem una placa de desenvolupament basada en microcontroladors N76E003, així com el programador Nu-Link. A més, també es requereixen cables de connexió i taulers per connectar tots els components tal com es mostra a continuació.

N76E003 Circuit d'interfície de botons i LED
Com podem veure a l'esquema següent, el LED de prova que hi ha dins de la placa de desenvolupament està connectat al port 1.4 i un LED addicional al port 1.5. La resistència R3 s’utilitza per limitar el corrent de LED.

Al pin 1.6, es connecta un polsador anomenat SW. Sempre que es prem el botó, el pin passarà a ser alt. En cas contrari, es reduirà amb la resistència desplegable R1 de 4,7 K. Podeu obtenir més informació sobre les resistències pull-up i pull-down si no coneixeu aquest concepte.
El pin és també un pin relacionat amb el programa al qual accedeix el programador. S'utilitza per enviar dades del programa. Tanmateix, veurem el motiu de la selecció d'aquests pins i obtindrem informació justa sobre el mapatge de pins de N76E003.
N76E003 Diagrama Pin-Out
El diagrama de pins de N76E003 es pot veure a la imatge següent:

Com podem veure, cada pin té diverses funcions i es pot utilitzar per a diferents propòsits. Posem un exemple. El pin 1.7 es pot utilitzar com a interrupció o entrada analògica o com a operació d'entrada-sortida de propòsit general. Per tant, si s'utilitza algun pin com a pins d'E / S, la funcionalitat respectiva no estarà disponible.
A causa d'això, el pin 1.5 que s'utilitza com a pin de sortida LED, perdrà el PWM i altres funcionalitats. Però això no és un problema, ja que no cal una altra funcionalitat per a aquest projecte. El motiu pel qual s’ha escollit el pin 1.5 com a sortida i el pin 1.6 com a entrada, a causa de la disponibilitat més propera dels pins GND i VDD per facilitar la connexió.
No obstant això, en aquest microcontrolador de 20 pins, es poden utilitzar 18 pins com a pin GPIO. El pin 2.0 s’utilitza dedicadament per a l’entrada de restabliment i no es pot utilitzar com a sortida. A part d'aquest pin, es poden configurar tots els pins en el mode descrit a continuació.

Segons el full de dades, PxM1.n i PxM2.n són dos registres que s'utilitzen per determinar l'operació de control del port d'E / S. Ara, escriure i llegir un port GPIO és una cosa completament diferent. Com que escriure a un registre de control de ports canvia l'estat de bloqueig del port, mentre que la lectura del port obté l'estat de l'estat lògic. Però per llegir un port, s’ha d’establir en un mode d’entrada.
Programa de control GPIO simple per a N76E003
El programa complet utilitzat en aquest tutorial es troba a la part inferior d’aquesta pàgina; l’explicació del codi és la següent.
Configuració del pin com a entrada
Comencem per l'entrada primer. Com s'ha comentat just abans, per llegir l'estat d'un port, cal configurar-lo com a entrada. Per tant, com que hem seleccionat P1.6 com a pin de commutació d’entrada, l’hem indicat a través de la següent línia de fragment de codi.
#define SW P16
Cal establir aquest mateix pin com a entrada. Per tant, a la funció de configuració, el pin es configura com a entrada mitjançant la línia següent.
configuració buida (buida) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Aquesta línia P16_Input_Mode; es defineix al fitxer de capçalera Function_define.h de la "biblioteca BSP include" que estableix el bit de pin com P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . El SET_BIT6 també es defineix al mateix fitxer de capçalera que
#define SET_BIT6 0x40
Configuració dels pins com a sortida
Igual que el pin d'entrada, el pin de sortida que utilitza el LED de prova incorporat i el LED1 extern també es defineix a la primera secció del codi amb els respectius PIN.
#define Test_LED P14 #define LED1 P15
Aquests pins es configuren com a sortida a la funció de configuració mitjançant les línies següents.
configuració buida (buida) { P14_Quasi_Mode; // Sortida P15_Quasi_Mode; // Sortida P16_Input_Mode; }
Aquestes línies també es defineixen al fitxer de capçalera Function_define.h on estableix el bit de pin com a P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . El SET_BIT6 també es defineix al mateix fitxer de capçalera que
#define SET_BIT4 0x10
Bucle Infinite While
Un maquinari, si està connectat amb l’alimentació i funciona perfectament que hauria de donar sortida contínuament, l’aplicació no s’atura mai. Fa el mateix durant infinits temps. Aquí ve la funció d’un bucle while infinit. L'aplicació dins del bucle while s'executa infinitament.
mentre que (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
El bucle while anterior parpelleja el led segons el valor sw_delay i també comprova l'estat del SW. Si es pressiona l’interruptor, el P1.6 serà elevat i, per tant, quan es prem, l’estat de lectura serà 1. En aquesta situació, de moment, es pressiona l’interruptor i el port P1.6 es manté alt, El LED1 brillarà.
Programació N76E003 i verificació de la sortida
En començar a utilitzar el tutorial N76E003, ja vam aprendre a programar el N76E003, de manera que repetirem els mateixos passos aquí per programar la nostra placa. El codi es va compilar correctament i va retornar 0 advertiments i 0 errors i va parpellejar mitjançant el mètode de parpelleig predeterminat per Keil.

Com podeu veure a la imatge anterior, el nostre LED extern s’encén quan premo el botó. El funcionament complet del projecte es pot trobar al vídeo enllaçat a continuació. Espero que hagueu gaudit del tutorial i hàgiu après alguna cosa útil si teniu alguna pregunta, deixeu-los a la secció de comentaris a continuació. També podeu utilitzar els nostres fòrums per fer altres preguntes tècniques.
