Stap 17:
Hieronder is de C Langusage-bron voor de Trakr App:
////////////////////////////////////////////
relaycontrol app voor Spy Video TRAKR.
Programma scant om te zien als knop A was
gedrukt op TRAKR externe en sets GPC0 hoog
en te verzenden door hoge GPC1
een relais elektromagnetische spoel. Dit zal
activeren van de relay switch sluiten de
circuit van een extern apparaat.
///////////////////////////////////////////
#include "svt.h" //include officiële API
#include "JAPI.h" //include "Geheime saus" API
#define GPC0 (1 << 0) //bitmask voor pin GPC0 = 00000001
#define GPC1 (1 << 1) //bitmask voor pin GPC1 = 00000010
#define GPC2 (1 << 2) //bitmask voor pin GPC2 00000100 =
#define GPC3 (1 << 3) //bitmask voor pin GPC3 00001000 =
#define GPC4 (1 << 4) //bitmask voor pin GPC4 00010000 =
#define GPC5 (1 << 5) //bitmask voor pin GPC5 00100000 =
#define GPC6 (1 << 6) //bitmask voor pin GPC6 01000000 =
#define GPC7 (1 << 7) //bitmask voor pin GPC7 10000000 =
int keyState; define "keystate" als geheel getal
VOID Start()
{
JAPI_SetIoOutputMode(GPC0+GPC1); //Set uitvoermodus voor PIN GPC0 en GPC1
}
BOOL Run()
{
keyState=GetRemoteKeys(); TRAKR-toets van de afstandsbediening ingedrukt
toewijzen aan keystate
Als (keyState > 0)
{//if keystate groter is dan 0
if(keyState&KEY_INPUT1)
{//Button een geperst
JAPI_SetIoHigh(GPC0+GPC1); //Set GPC0 en GPC1 pinnen hoge (3,3 v)
} else {}
JAPI_SetIoLow(GPC0+GPC1); Schakel pinnen, GPC0 en GPC1
}
if(keyState&KEY_HOME)
{//if thuisknop ingedrukt
return false; Dit zal het einde van de lus
}
}
return true; lus zal herhalen tot vals
}
VOID End()
{//Program einde - Schakel beide pins
JAPI_SetIoLow(GPC0+GPC1);
}
En daarna is het Make-bestand:
# Makefile voor TRAKR speelgoed
# Trakr Project
TRACKR_PATH = C:/Trackr
Programmanaam = relaycontrol
PRETTY_NAME = relaycontrol
OUTPUT_PATH =. / Intermediate
OUTPUT_NAME = $(OUTPUT_PATH) / $(programmanaam) elf
INTERNALS_PATH =... / Internals
BRONNEN = app.c
S_OBJECTS = $(OUTPUT_PATH)/app.o
OBJECTEN = $(S_OBJECTS) $(INTERNALS_PATH)/trakr.a
SHELL = sh
CC = arm-elf-gcc
AS = arm-elf-as
BIN = arm-elf-ld
LD = arm-elf-ld
TOPMEMORY = 0XFFE7C000
CFLAGS = - O0-IK... / Internals/Include-ik... / Internals-wand - gstabs +
TARGET_FLAG = - mcpu = arm926ejs - mapcs-32 - mlittle-endian - specs=specs.semi
LDFLAGS = -T... /Internals/WJ_APP_8M.LD -Wl,--defsym-Wl,__stack_base=$(TOPMEMORY) -Wl,-kaart -Wl, $(basename $ - nostartfiles-static
alle: voorbereidende build maken van $(OUTPUT_NAME) postbuild
$(OUTPUT_NAME): $(OBJECTS)
"Link... "
"Het creëren bestand $
-u _start -o $@ $(INTERNALS_PATH)/trakr_start.a $(OBJECTS) $(TARGET_FLAG) $(LDFLAGS)
$(OUTPUT_PATH)/app.o:app.c Makefile
"Samenstellen van $<"
-c -o "$" $< "$(TARGET_FLAG) $(CFLAGS)
. NEP: schoon prebuild postbuild
schoon:
$(RM) -f $(programmanaam) .bin
$(RM) -f "$(PRETTY_NAME) .bin"
$(RM) -f $(OUTPUT_PATH)/app.o
$(RM) -f $(OUTPUT_NAME)
$(RM) -f $(MKDEPFILE)
postbuild:
kunnen worden arm-elf-objcopy - O binaire $(OUTPUT_NAME) "$(PRETTY_NAME) .bin"
[ -d "E:/" ] ; vervolgens \
CP "$(PRETTY_NAME) .bin" e:/APPS /; \
fi
voorbereidende build maken van:
# Einde van Makefile