Étape 17 :
Voici la source Langusage de C pour l’application de Trakr :
////////////////////////////////////////////
relaycontrol app pour espion vidéo TRAKR.
Programme analyse pour voir si le bouton A été
pressé sur TRAKR distant et ensembles GPC0 haute
et GPC1 élevé d’envoyer courant à travers
bobine électromagnétique du relais. Cette volonté
déclencher du relais fermeture de la
circuit d’un appareil externe.
///////////////////////////////////////////
#include « svt.h » //include API officielle
#include « JAPI.h » //include « Secret sauce » API
#define GPC0 (1 << 0) //bitmask pour axe GPC0 = 00000001
#define GPC1 (1 << 1) //bitmask pour axe GPC1 = 00000010
#define GPC2 (1 << //bitmask 2) pour la broche GPC2 = 00000100
#define GPC3 (1 << 3) //bitmask pour broche GPC3 = 00001000
#define GPC4 (1 << 4) //bitmask pour axe GPC4 = 00010000
#define GPC5 (1 << 5) //bitmask pour broche GPC5 = 00100000
#define PDC6 (1 << 6) //bitmask pour axe PDC6 = 01000000
#define GPC7 (1 << 7) //bitmask pour axe GPC7 = 10000000
keyState int ; qualifier de « keystate » entier
void Start()
{
JAPI_SetIoOutputMode(GPC0+GPC1) ; mode de sortie //Set pour broches GPC0 et GPC1
}
bool Run()
{
keyState=GetRemoteKeys() ; Vous appuyez sur la touche télécommande TRAKR
assigner à keystate
Si (keyState > 0)
{//if keystate est supérieur à 0
if(keyState&KEY_INPUT1)
{//Button une pressée
JAPI_SetIoHigh(GPC0+GPC1) ; //Set GPC0 et GPC1 broches hautes (3.3V)
} else {}
JAPI_SetIoLow(GPC0+GPC1) ; Couper les pins GPC0 et GPC1
}
if(keyState&KEY_HOME)
{//if bouton home pressé
retourne la valeur false ; Cela mettra fin à la boucle
}
}
retourne la valeur true ; boucle se répète jusqu’au faux
}
void End()
{//Program fin - éteindre les deux broches
JAPI_SetIoLow(GPC0+GPC1) ;
}
Et ensuite le fichier Make :
# Makefile pour TRAKR jouet
# Projet Trakr
TRACKR_PATH = c: / Trackr
Nom_programme = relaycontrol
PRETTY_NAME = relaycontrol
OUTPUT_PATH =. / intermédiaire
Nom_sortie = $(OUTPUT_PATH) / .elf $(nom_programme)
INTERNALS_PATH =... / Composants internes
SOURCES = app.c
S_OBJECTS = $(OUTPUT_PATH)/app.o
OBJETS = $(S_OBJECTS) $(INTERNALS_PATH)/trakr.a
SHELL = sh
CC = bras-elf-gcc
AS = bras-elf-as
BIN = bras-elf-ld
LD = ld-elf-bras
TOPMEMORY = 0XFFE7C000
CFLAGS = - O0-J’AI... / Interne/Include-j’ai... / Composants internes-mur - gstabs +
TARGET_FLAG = - mcpu = arm926ejs - CMPAS-32 - mlittle-endian - specs=specs.semi
LDFLAGS = -T... /Internals/WJ_APP_8M.LD -Wl,--defsym-Wl,__stack_base=$(TOPMEMORY) -Wl,-Map -Wl, $(basename $ - gcc-g-s-Shared-o-nostartfiles-statique
tous : pré-compilé postgénération $(OUTPUT_NAME)
$(NOM_SORTIE): $(OBJECTS)
"Liaison... "
« Créer fichier $
-u _start -o $@ $(INTERNALS_PATH)/trakr_start.a $(OBJECTS) $(TARGET_FLAG) $(LDFLAGS)
$(OUTPUT_PATH)/app.o:app.c Makefile
"Compilation $<"
-c -o "$" $< » $(TARGET_FLAG) $(CFLAGS)
. FAUX : nettoyer postgénération tronçon préalable
nettoyer :
$(RM) -f $(nom_programme) .bin
$(RM) -f « $(PRETTY_NAME) .bin »
$(RM) -f $(OUTPUT_PATH)/app.o
$(RM) -f $(OUTPUT_NAME)
$(RM) -f $(MKDEPFILE)
postgénération :
bras-elf-objcopy - O binaire $(OUTPUT_NAME) « $(PRETTY_NAME) .bin »
[ -d "E:/" ] ; puis \
CP « $(PRETTY_NAME) .bin » e:/APPS / ; \
FI
tronçon :
# Fin du Makefile