- Configuration matérielle et configuration requise
- Circuit d'interface LED et bouton poussoir N76E003
- Schéma de brochage N76E003
- Programme de contrôle GPIO simple pour N76E003
- Programmation du N76E003 et vérification de la sortie
Dans notre didacticiel précédent, nous avons utilisé un programme de base de clignotement des LED comme guide de démarrage avec N76E003, nous avons déjà appris à configurer Keil IDE et à configurer l'environnement pour la programmation de l' unité de microcontrôleur nuvoton N76E003. Il est temps d'aller un peu plus loin et d'utiliser l' interface GPIO de base pour contrôler le matériel supplémentaire. Si vous êtes intéressé, vous pouvez également consulter d'autres didacticiels GPIO de microcontrôleur répertoriés ci-dessous.
- STM32 Nucleo64 avec CubeMx et TrueSTUDIO - Contrôle LED
- STM8S avec contrôle GPIO Cosmic C
- Tutoriel PIC avec MPLABX LED Blink
- MSP430 avec Code Composer Studio - Contrôle simple des LED
Depuis dans notre tutoriel précédent, nous n'avons utilisé qu'une LED pour clignoter en utilisant une broche IO comme sortie. Dans ce tutoriel, nous allons apprendre à utiliser une autre broche IO comme entrée et à contrôler une LED supplémentaire. Sans perdre beaucoup de temps, évaluons le type de configuration matérielle dont nous avons besoin.
Configuration matérielle et configuration requise
Comme un interrupteur doit être utilisé comme entrée, la première chose dont nous avons besoin est un bouton-poussoir. Nous avons également besoin d'une LED supplémentaire pour être contrôlée par ce bouton-poussoir. En dehors de ces deux, nous avons également besoin d'une résistance pour limiter le courant de la LED et d'une résistance supplémentaire pour le pull-down à travers le bouton-poussoir. Cela sera démontré plus en détail dans la section schématique. Les composants dont nous avons besoin -
- Un bouton-poussoir (tout type d'interrupteur momentané en particulier - interrupteur tactile)
- N'importe quelle couleur de la LED
- Résistance 4,7k à des fins de pull-down
- Résistance 100R
Sans oublier, outre les composants ci-dessus, nous avons besoin d'une carte de développement basée sur un microcontrôleur N76E003 ainsi que du programmeur Nu-Link. De plus, une carte d'expérimentation et des fils de raccordement sont également nécessaires pour connecter tous les composants, comme illustré ci-dessous.
Circuit d'interface LED et bouton poussoir N76E003
Comme nous pouvons le voir dans le schéma ci-dessous, la LED de test qui se trouve à l'intérieur de la carte de développement est connectée sur le port 1.4 et une LED supplémentaire est connectée sur le port 1.5. La résistance R3 est utilisée pour limiter le courant de la LED.
Dans la broche 1.6, un bouton poussoir nommé SW est connecté. Chaque fois que vous appuyez sur le bouton, la broche devient haute. Dans le cas contraire, il deviendra faible par la 4.7K résistance pull-down R1. Vous pouvez en savoir plus sur les résistances pull-up et pull-down si vous êtes nouveau dans ce concept.
La broche est également une broche liée au programme accessible par le programmeur. Il est utilisé pour envoyer des données de programme. Cependant, nous verrons la raison de la sélection de ces broches ainsi que des informations équitables sur le mappage des broches de N76E003.
Schéma de brochage N76E003
Le schéma des broches du N76E003 peut être vu dans l'image ci-dessous-
Comme nous pouvons le voir, chaque broche a plusieurs fonctions et peut être utilisée à des fins différentes. Prenons un exemple. La broche 1.7 peut être utilisée comme une interruption, ou une entrée analogique ou comme une opération d'entrée-sortie à usage général. Ainsi, si une broche est utilisée comme broches d'E / S, la fonctionnalité correspondante ne sera pas disponible.
Pour cette raison, la broche 1.5 qui est utilisée comme broche de sortie LED, perdra le PWM et d'autres fonctionnalités. Mais ce n'est pas un problème car une autre fonctionnalité n'est pas requise pour ce projet. La raison du choix de la broche 1.5 comme sortie et de la broche 1.6 comme entrée, en raison de la disponibilité la plus proche des broches GND et VDD pour une connexion facile.
Cependant, dans ce microcontrôleur sur 20 broches, 18 broches peuvent être utilisées comme broche GPIO. La broche 2.0 est spécialement utilisée pour l'entrée de réinitialisation et ne peut pas être utilisée comme sortie. En dehors de cette broche, toutes les broches peuvent être configurées dans le mode décrit ci-dessous.
Selon la fiche technique, PxM1.n et PxM2.n sont deux registres utilisés pour déterminer le fonctionnement de contrôle du port d'E / S. Maintenant, en venir à écrire et lire un port GPIO est une chose complètement différente. Parce que l'écriture dans un registre de contrôle de port modifie l'état de verrouillage du port, tandis que la lecture du port obtient l'état de l'état logique. Mais pour lire un port, il doit être mis en mode d'entrée.
Programme de contrôle GPIO simple pour N76E003
Le programme complet utilisé dans ce tutoriel se trouve au bas de cette page, l'explication du code est la suivante.
Définition de la broche comme entrée
Commençons par l'entrée en premier. Comme indiqué précédemment, pour lire l'état d'un port, il doit être défini comme entrée. Par conséquent, comme nous avons sélectionné P1.6 comme broche de commutateur d'entrée, nous l'avons indiqué via la ligne ci-dessous de l'extrait de code.
#define SW P16
Cette même broche doit être définie comme entrée. Ainsi, sur la fonction de configuration, la broche est définie comme entrée en utilisant la ligne ci-dessous.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Cette ligne P16_Input_Mode; est défini dans le fichier d'en-tête Function_define.h de la «bibliothèque d'inclusion BSP» qui définit le bit de broche comme P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Le SET_BIT6 est également défini dans le même fichier d'en-tête comme-
#define SET_BIT6 0x40
Définition des broches comme sortie
Identique à la broche d'entrée, la broche de sortie utilisée par la LED de test intégrée et la LED externe1 est également définie dans la première section du code avec les PIN respectifs.
#define Test_LED P14 #define LED1 P15
Ces broches sont définies comme une sortie dans la fonction de configuration à l'aide des lignes ci-dessous.
void setup (void) { P14_Quasi_Mode; // Sortie P15_Quasi_Mode; // Sortie P16_Input_Mode; }
Ces lignes sont également définies dans le fichier d'en-tête Function_define.h où il définit le bit de broche comme P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Le SET_BIT6 est également défini dans le même fichier d'en-tête comme-
#define SET_BIT4 0x10
Boucle While infinie
Un matériel, s'il est connecté à l'alimentation et fonctionne parfaitement qui devrait donner une sortie en continu, l'application ne s'arrête jamais. Il fait la même chose pour des temps infinis. Voici la fonction d'une boucle while infinie. L'application à l'intérieur de la boucle while s'exécute indéfiniment.
tandis que (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); si (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
La boucle while ci-dessus fait clignoter la LED selon la valeur sw_delay et vérifie également l'état du SW. Si le commutateur est enfoncé, le P1.6 sera haut, et donc quand il est pressé, le statut de lecture sera 1. Dans cette situation, pendant le temps, le commutateur est enfoncé et le port P1.6 reste haut, le LED1 s'allumera.
Programmation du N76E003 et vérification de la sortie
Dans notre didacticiel de mise en route du N76E003, nous avons déjà appris à programmer le N76E003, nous allons donc simplement répéter les mêmes étapes ici pour programmer notre carte. Le code a été compilé avec succès et a renvoyé 0 avertissement et 0 erreurs et a clignoté à l'aide de la méthode de clignotement par défaut par Keil.
Comme vous pouvez le voir sur l'image ci-dessus, notre LED externe s'allume lorsque j'appuie sur le bouton poussoir. Le fonctionnement complet du projet peut être trouvé dans la vidéo ci-dessous. J'espère que vous avez apprécié le didacticiel et appris quelque chose d'utile si vous avez des questions, laissez-les dans la section commentaires ci-dessous. Vous pouvez également utiliser nos forums pour poser d'autres questions techniques.