架构师_程序员_码农网

N Récupérer le mot de passe
S'inscrire

QQ登录

Une seule étape pour commencer

Recherche
Vue :6245|Réponse : 0
打印 上一主题 下一主题

Zigbee Journey (II) : Le premier programme CC2430 - Expérience de clignotement de LED

[Copier le lien]
A 跳转到指定楼层
le propriétaire du bâtiment
发表于 2014-10-30 23:15:39|只看该作者回帖奖励 | Mode lecture
I. Reprendre là où nous nous sommes arrêtés

Dans l'article précédent , "Zigbee Journey (I) : The Beginning", nous avons brièvement présenté Zigbee et son environnement de développement, OK, maintenant que les outils sont complets, une question se pose : comment utiliser le logiciel et le matériel pour écrire un programme qui peut s'exécuter ?

Cet article est essentiellement destiné à répondre à la question ci-dessus : "clignotement de la lumière LED" comme exemple d'une petite expérience, comment configurer IAR pour le développement de programmes basés sur le CC2430, comment utiliser IAR pour écrire et déboguer le programme en ligne.

Configuration de l'IAR

IAR est une plateforme de développement embarquée puissante qui supporte de nombreux types de puces, et chaque projet dans IAR peut avoir sa propre configuration, y compris le type de périphérique, le tas/la pile, le linker, le débogueur, etc.

(1) Nouvel espace de travail et nouveau projet

Tout d'abord, créez un nouveau dossier ledtest, ouvrez IAR, sélectionnez le menu principal File -> New -> Workspace pour créer un nouvel espace de travail.

Sélectionnez Project -> Create New Project -> Empty Project, cliquez sur OK, et enregistrez le fichier de projet dans le dossier ledtest, nommé : ledtest.ewp (comme ci-dessous).

(2) Configuration des options générales

Paramètre cible : Appareil : CC2430 ;

Code Mode : Near ;

Modèle de données : Large ;

Convention d'appel : pile XDATA reetrant

Réglage du pointeur de données : Nombre de DPTR : 1

Paramètres de la pile et du tas : Taille de la pile XDATA : 0x1FF

(3) Paramètres de l'éditeur de liens

Fichier de commande de l'éditeur de liens : select lnk51ew_cc2430.xcl

(4) Paramètres du débogueur :


Driver : Texas Instruments (cette expérience pour le débogage de la machine réelle, donc choisir TI ; si d'autres procédures pour utiliser l'émulateur IAR, optionnel Simulator) Device Fichier de description : CC2430.ddf

À ce stade, la configuration IAR pour cette expérience est essentiellement terminée, la suite à introduire sa mise en œuvre de codage.

Troisièmement, la préparation du code de programme(1) Nouveau fichier de programme

Choisissez Fichier->Nouveau->Fichier, créez un nouveau fichier main.c.

(2) Introduire les fichiers d'en-tête

Les programmes basés sur le CC2430 doivent inclure une référence à ioCC2430.h, qui définit l'adresse des différents types de registres de fonctions spéciales (SFR) du CC2430.

#include //Introduire le fichier d'en-tête correspondant au CC2430 (contient la définition de chaque SFR)

Ce fichier est intégré dans IAR (similaire à stdio.h), la souris sur cette ligne de code, clic droit, sélectionner OPen "ioCC2430.h", vous pouvez voir le contenu complet de ce fichier d'en-tête.

(3) Définir les broches de la LED

Vérifiez le schéma de circuit de la carte de développement, comme indiqué ci-dessous :

On sait que les led1~4 sont contrôlées par les pins P1_0~P4_0 respectivement, donc on peut définir led1, led2, led3, led4 comme les pins P1_0, P2_0, P3_0, P4_0 respectivement.


#define led1 P1_0 //define LED1 comme contrôle du port P1_0 #define led2 P1_1

//define led2 comme P1_1 contrôle du port #define led3 P1_2 //define led3 comme P1_2 contrôle du port #define led4
P1_3 //définir led4 pour le contrôle du port P1_3

(4) Fonction principale

Commençons maintenant à écrire la fonction principale.

Tout d'abord, avant d'utiliser les ports P1.0~P1.4, vous devez configurer leur mode de fonctionnement et leur direction d'entrée/sortie, ce qui implique deux SFR : P1SEL, P1DIR.


P1SEL = 0x00 ; //Set P1 comme un port E/S ordinaire P1DIR |= 0x0F ; & nbsp ; //Set P1.0 P1.1 P1.2 P1.3 comme sorties

Astuces Zigbee
Le CC2430 dispose de P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7, soit un total de 21 ports d'E/S. Ils peuvent être utilisés comme E/S numériques à usage général ou pour connecter des E/S périphériques telles que ADC, timer/compteur ou USART.
Il existe trois types de registres dans le SFR du CC2430 qui peuvent être utilisés pour configurer ces ports d'E/S :
①PxSEL (x est 0/1/2) : sélection de la fonction du port P0/P1/P2
PxSEL (x est 0/1/2) : sélection de la fonction du port P0/P1/P2 nbsp;0 : E/S numérique à usage général, 1 : E/S périphérique, la valeur par défaut est 0
PxDIR (x est 0/1/2) : Direction du port P0/P1/P2
& nbsp;0 : entrée, 1 : sortie, la valeur par défaut est 0
③PxINP (x est 0/1) : Mode d'entrée du port P0/P1
nbsp;0 : montée, 1 : sortie, valeur par défaut 0 nbsp;0 : pull-up/down, 1 : tri-state, par défaut 0
La configuration est requise lors de l'utilisation du port IO, si elle est par défaut, alors prenez la valeur par défaut du système.

Initialiser ensuite les 4 LEDs, en les mettant toutes à l'état éteint :




led1 = 1 ; led2 = 1 ; led3 = 1 ; led4 = 1.

Enfin, écrivez le code de l'effet de clignotement des LEDs :






led1 = 0 ; //led1 clignote Delay(10) ; led1 = 1 ; Delay(10) ; led2




= 0 ; //led2 clignote Délai(10) ; led2 = 1 ; Délai(10) ; led3 = 0 ; //led3 clignote Délai(10) ; /





//clignotement de led3 Délai(10) ; led3 = 1 ; Délai(10) ; led4 = 0 ; //clignotement de led4 &


nbsp ; Délai(10) ; led4 = 1 ; Délai(10) ;


Ceci implique une sous-fonction Delay(unsigned char n) :





v oid Delay(unsigned char n) { unsigned char i ; unsigned int j ; for(i = 0 ; i < n ; i++) &nbsp


; for(j = 1 ; j ; j++) ; }

(5) Aperçu du code

Combinez l'ensemble du code ci-dessus comme indiqué ci-dessous :

//Introduire les fichiers d'en-tête
#include //introduire le fichier d'en-tête correspondant au CC2430 (y compris la définition de chaque SFR)

//Définir les broches de la LED
#define led1 P1_0 //define LED1 pour le contrôle du port P1_0
#define led2 P1_1 //define LED2 pour le contrôle du port P1_1
#define led3 P1_2 //define LED3 pour le contrôle du port P1_2
#define led4 P1_3 //define LED4 pour le contrôle du port P1_3 //sous-routine Delay
void Delay (unsigned char n) {
unsigned char i.
unsigned int j.
for (i = 0; i < n ; i++)
for (j = 1; j ; j++)
;
}

void main (void )
{
P1SEL = 0x00; //Set P1 comme port E/S normal
P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 comme sorties

led1 = 1; //initialisation, les 4 leds sont éteintes
led2 = 1; //initialisation, les 4 diodes sont éteintes
led3 = 1; led4 = 1; //initialisation, les 4 diodes sont éteintes
led2 = 1 ; led3 = 1 ; led4 = 1; //initialiser, les 4 lumières led éteintes

while(1 ) //start cycle
{
led1 = 0; //led1 clignote
Delay (10 ) ; //Delay (10 ) ; //Delay (10 ) ; //Delay (10 )
delay(10) ; led1 = 1; //led1 clignote
Délai (10 ).

led2 = 0; //led2 clignote
Delay (10 ) ; led2 = 1 ; //led2 clignote
led2 = 1; //led2 clignote
Délai (10 ).

led3 = 0; //led3 clignote
Delay (10 ) ; led3 = 1 ; //led3 clignote
led3 = 1; //led3 clignote
Délai (10 ).

led4 = 0; //led4 clignote
Delay (10 ) ; led4 = 1 ; //led4 clignote
led4 = 1; //led4 clignote
Délai (10 ) ; //Délai (10 )
}
}

OK, le code de cette petite expérience est écrit, ce n'est pas très simple ah, hehe~ !

Quatrièmement, compilation et débogage

Sélectionnez Project -> Make, compilez le code, si c'est le cas, la sortie suivante apparaîtra :

2011021320413789.jpg
c

Connectez le périphérique Zigbee dans l'ordre de la carte de développement Zigbee → Débogueur → Port USB du PC , puis sélectionnez Projet -> Déboguer, le programme sera téléchargé dans la carte de développement automatiquement.

Sélectionnez ensuite Debug -> Go pour démarrer le programme, et vous verrez les 4 LED clignoter en séquence ! Bien qu'il s'agisse d'une petite expérience simple, mais lorsque j'y suis parvenu, je suis un peu excité !

V. Conclusion

Dans cet article, "l'expérience de clignotement de la lumière LED" comme la base, respectivement, de la configuration de l'IAR, la préparation du code de programme, ainsi que la compilation et le processus de débogage introduit l'ensemble du processus de mise en œuvre. Le prochain article sera consacré à la compréhension du processus de base des procédures de développement basées sur l'introduction de plusieurs expériences de développement du CC2430 impliquant des minuteries, des communications série, la conversion AD, la mise en veille du système et le chien de garde , etc.






Previous :[Referred] Zigbee voyage (I) : le début du monde
Next :[Report]Zigbee Journey (III) : Quelques expériences importantes sur le CC2430 - interruptions externes
Le réseau de fermiers de code, seulement publié dans le processus de la pratique, rencontré des difficultés techniques, ne pas induire les autres en erreur.
Vous devez vous connecter avant de pouvoir poster Log in | Register

C ette version des règles intégralesR


AVERTISSEMENT : Tous les logiciels, matériels de programmation ou articles publiés par Code Farmer sont destinés à être utilisés uniquement à des fins d'apprentissage et de recherche ; le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon, toutes les conséquences seront supportées par les utilisateurs eux-mêmes. Les informations de ce site proviennent du réseau, le litige sur les droits d'auteur n'a rien à voir avec ce site. Vous devez supprimer complètement le contenu susmentionné de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, soutenez le logiciel authentique, achetez l'enregistrement et obtenez un meilleur service authentique. En cas d'infraction, veuillez nous contacter par courrier électronique pour régler le problème.

Courrier To:help@itsvse.com

QQ | ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-17 14:48

Réponse rapideRetour au débutRetour à la liste