E
eziggurat
Guest
Čau,
Es cenšos ostas UCOS uz LPC2103 izmantojot jaunākās kods, bet man joprojām nevar saņemt to darbu.
Man ir pārrakstīt manu kodu, lai ieslēgtu LCD fona ar un
bez UCOS.Kods bez UCOS tikai piezvanīt
BackLightingOn () un InitPort funkcijas, galvenais () un šo darbu
naudas sods, bet es vēlos, lai varētu saņemt UCOS darboties.Kodu zemāk redzams
uzdevums ir radīta, lai ieslēgtu fona un kavēšanās, OSTimeDlyHMSM ().
Kodu domāt satur vairākus uzdevumus, bet Man ir samazināta līdz vienai tāpēc es
var aprēķināt, kā nokļūt UCOS braukšanas par LPC2103, griežot uz
aizmugurē gaismas bet es neredzu problēmu kodu.
Kodekss par galveno kods ir redzams zemāk.
# ietver "LPC2103.h"
# ietver "os_cpu.h"
# ietver "cpu.h"
# ietver "app_cfg.h"
# ietver "ucos_ii.h"# define Fosc 16000000 / / Crystal
frekvences, 10MHz ~ 25MHzŁŹshould ir tādas pašas kā faktisko statusu.
# define Fcclk (Fosc * 3) / / System
frekvences, jābūt (1 ~ 32) daudzkārtņi Fosc, un tiem ir jābūt vienādām vai
mazāk nekā 60MHz.# define Fpclk (Fcclk / 4) * 1 / / VPB pulksteni
frekvences, jābūt 1a ˘ 2A ˘ 4 daudzkārtņi (Fcclk / 4).statiskā OS_STK AppTaskStartStk [APP_TASK_START_STK_SIZE];statiskā anulēts AppTaskStart (spēkā neesošs * p_arg);
anulēts tc3 (spēkā neesošs) (
T3IR = 1; / / Clear pārtraukt karogs
OSTimeTick ();
FIOPIN1 ^ = 0x08; / / debugging
VICVectAddr = 0; / / apstiprinājums Interrupt
)
anulēts StartTicker (spēkā neesošs) (
T3MR0 = Fpclk/OS_TICKS_PER_SEC-1; / / 1mSec = 15000-1 skaits ir 15
Mhz PCLK
T3MCR = 3; / / Interrupt un Atjaunot uz MR0
T3TCR = 1; / / Timer0 Ieslēgt
VICVectAddr0 = (neparakstīts garš) tc3; / / noteikts pārtraukt vektora 0
VICVectCntl0 = 0x20 | VIC_TIMER3; / / to izmantot Taimeris 0
Interrupt
VICIntEnable = 1 <<VIC_TIMER3; / / Enable Timer0 Interrupt
)anulēts BackLightingOn (spēkā neesošs) (
/ / BackLightingOnFlag = 1;
/ / BackLightingOnTimer = 0;
IOSET = 0x04000000;
FIOSET3 = 0x04;
)
anulēts Initport (spēkā neesošs) (
IODIR = 0x0C81000C;
FIODIR0 = 0x0C;
FIODIR2 = 0x81;
FIODIR3 = 0x0C;
FIOPIN2 = 0x00;
FIOPIN3 = 0x00;
FIODIR1 = 0x08;
FIOPIN1 = 0x00;
)anulēts BSP_IntDisAll (spēkā neesošs)
(
VICIntEnClr = 0xFFFFFFFFL; / *
Disable ALL pārtrauc * /
)
int galvenais (spēkā neesošs) (
BSP_IntDisAll (); / / izslēgt pārtrauc
OSInit ();OSTaskCreateExt (AppTaskStart, / * Izveidot
sākuma uzdevums * /
(spēkā neesošs *) 0,
(OS_STK *) & AppTaskStartStk [APP_TASK_START_STK_SIZE
- 1],
APP_TASK_START_PRIO,
APP_TASK_START_PRIO,
(OS_STK *) & AppTaskStartStk [0]
APP_TASK_START_STK_SIZE,
(spēkā neesošs *) 0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);OSStart ();
atpakaļ (0);
)statiskā anulēts AppTaskStart (spēkā neesošs * p_arg)
((spēkā neesošs) p_arg;
OS_CPU_InitExceptVect ();
SCS = 0x03;
ja (WDMOD & 0x04) (
WDMOD & = ~ 0x04;
)
StartTicker ();
/ / BSP_Init (); / *
Inicializ BSP funkcijas * /
Initport (); / / inicializētu ostām
/ * Izveidot pieteikumu uzdevumus
* /
while (1) (/ * Task iestāde,
vienmēr pastāv rakstisks kā bezgalīga cilpa.* /BackLightingOn (); / / Pagriezieties Fona apgaismojuma On
OSTimeDlyHMSM (0, 0, 0, 5);
)
)/ *
************************************************** ****************************** \
*************************
* OS_CPU_ExceptHndlr ()
*
* Apraksts: Rokas visiem izņēmumiem.
*
* Argumentu (s): except_id ARM izņēmums tips:
*
* OS_CPU_ARM_EXCEPT_RESET
0x00
* OS_CPU_ARM_EXCEPT_UNDEF_INSTR
0x01
* OS_CPU_ARM_EXCEPT_SWI
0x02
* OS_CPU_ARM_EXCEPT_PREFETCH_ABORT
0x03
* OS_CPU_ARM_EXCEPT_DATA_ABORT
0x04
* OS_CPU_ARM_EXCEPT_ADDR_ABORT
0x05
* OS_CPU_ARM_EXCEPT_IRQ
0x06
* OS_CPU_ARM_EXCEPT_FIQ
0x07
*
* Return (s): nav.
*
* Zvanītāju (s): OS_CPU_ARM_EXCEPT_HANDLER (), kas ir deklarētas
os_cpu_a.s.
************************************************** ****************************** \
*************************
* /
anulēts OS_CPU_ExceptHndlr (CPU_INT32U except_id)
(
CPU_FNCT_VOID pfnct;ja (except_id == OS_CPU_ARM_EXCEPT_IRQ) (
pfnct = (CPU_FNCT_VOID) VICVectAddr; / *
Lasīt pārtraukt vektors no Vic * /
while (pfnct! = (CPU_FNCT_VOID) 0) (/ *
Pārliecinieties, ka mums nav null pointers * /
(* pfnct) (); / *
Izpildīt ISR par pārtraukumu ierīce * /
VICVectAddr = 1; / *
Acknowlege ar Vic pārtraukt * /
pfnct = (CPU_FNCT_VOID) VICVectAddr; / *
Lasīt pārtraukt vektors no Vic * /
)
) Cits (
/ *
Infinite loop par citiem izņēmumiem.* /
/ *
Jāaizstāj ar citām uzvedība (atsāknēšana uc) * /
while (1) (
;
)
)
)Pievienots pēc 46 sekundes:Mans starta skripts ir parādīts zemāk.
;/************************************************ *****************************/
; / * STARTUP.S: Startup failu Philips LPC2000
* /
;/************************************************ *****************************/
; / * <<<Izmantojiet Konfigurācija Wizard in Context Menu>>>
* /
;/************************************************ *****************************/
; / * Šis fails ir daļa no uVision / ARM izstrādes instrumentārijs.
* /
; / * Copyright (c) 2005-2007 Keil Software.All rights reserved.
* /
; / * Šo programmatūru var izmantot tikai saskaņā ar noteikumiem par derīgu,
strāva, * /
; / * Gala lietotāja licenci no KEIL par saderīgu versiju KEIL
programmatūra * /
; / * Attīstības instrumenti.Nekas cits dod Jums tiesības izmantot šo
programmatūru.* /
;/************************************************ *****************************/; / *
* The STARTUP.S kods ir izpildīts pēc CPU Reset.Šis fails var būt
* Tulkots ar šādiem SET simboliem.In uVision šiem SET
* Simboli ir ieraksta opcijas - ASM - Noteikt.
*
* REMAP: ja iestatītu starta kods initializes reģistrā MEMMAP
* Kuras overwrites uzstādījumus no CPU konfigurācija pins.Par
* Starta un pārtraukt vektori ir remapped no:
* 0x00000000 noklusējuma (nav remapped)
* 0x80000000, kad EXTMEM_MODE tiek izmantots
* 0x40000000, kad RAM_MODE tiek izmantots
*
* EXTMEM_MODE: ja noteikta ierīce ir konfigur koda izpildi
* No ārējiem atmiņas sākot adrese 0x80000000.
*
* RAM_MODE: ja noteikta ierīce ir konfigur koda izpildi
; * No on-chip RAM sākot ar adresi 0x40000000.
*
* EXTERNAL_MODE: ja iestatītu PIN2SEL vērtības ir rakstisks, kas ļauj
* Ārējo BUS pie starta.
* /; Standard definīcijas Mode bitiem un Interrupt ( "I & F) karogi PSRs
Mode_USR EQU 0x10
Mode_FIQ EQU 0x11
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
Mode_ABT EQU 0x17
Mode_UND EQU 0x1B
Mode_SYS EQU 0x1F
I_Bit EQU 0x80, kad es bits ir iestatīts, IRQ ir
invalīdiem
F_Bit EQU 0x40, kad F bits ir iestatīts, FIQ ir
invalīdiem; / / <h> Skursteņa konfigurācija (skursteņa izmērus baitos)
; / / <o0> Undefined Mode <0x0-0xFFFFFFFF: 8>
; / / <o1> Uzraudzītājs Mode <0x0-0xFFFFFFFF: 8>
; / / <o2> Pārtraukt Mode <0x0-0xFFFFFFFF: 8>
; / / <o3> Ātrās Interrupt Mode <0x0-0xFFFFFFFF: 8>
; / / <o4> Interrupt Mode <0x0-0xFFFFFFFF: 8>
; / / <o5> Lietotāji / System Mode <0x0-0xFFFFFFFF: 8>
; / / </ H>
UND_Stack_Size EQU 0x00000000
SVC_Stack_Size EQU 0x00000008
ABT_Stack_Size EQU 0x00000000
FIQ_Stack_Size EQU 0x00000000
IRQ_Stack_Size EQU 0x00000080
USR_Stack_Size EQU 0x00000400
ISR_Stack_Size EQU (UND_Stack_Size SVC_Stack_Size
ABT_Stack_Size \
FIQ_Stack_Size IRQ_Stack_Size)
ZONA dūmeni, NOINIT, READWRITE,
centrēšanai = 3
Stack_Mem SPACE USR_Stack_Size
__initial_sp SPACE ISR_Stack_Size
Stack_Top; / / <h> Terehons Konfigurācija
; / / <o> Terehons Lielums (baitos) <0x0-0xFFFFFFFF>
; / / </ H>
Heap_Size EQU 0x00000000
ZONA terehons, NOINIT, READWRITE,
centrēšanai = 3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit; VPBDIV definīcijas
VPBDIV EQU 0xE01FC100; VPBDIV Adrese
; / / <e> VPBDIV Setup
; / / Peripheral Bus Clock Rate
; / / <o1.0..1> VPBDIV: VPB Pulkstenis
; / / <0 => VPB Clock = CPU Pulkstenis / 4
; / / <1 => VPB Clock = CPU Pulkstenis
; / / <2 => VPB Clock = CPU Pulkstenis / 2
; / / <o1.4..5> XCLKDIV: XCLK Pin
; / / <0 => XCLK Pin = CPU Pulkstenis / 4
; / / <1 => XCLK Pin = CPU Pulkstenis
; / / <2 => XCLK Pin = CPU Pulkstenis / 2
; / / </ E>
VPBDIV_SETUP EQU 0
VPBDIV_Val EQU 0x00000000; Phase Slēgta Cikls (PLL) definīcijas
PLL_BASE EQU 0xE01FC080; PLL Base Adrese
PLLCON_OFS EQU 0x00; PLL Control Offset
PLLCFG_OFS EQU 0x04; PLL Konfigurācija Offset
PLLSTAT_OFS EQU 0x08; PLL Statuss Offset
PLLFEED_OFS EQU 0x0C; PLL Feed Offset
PLLCON_PLLE EQU (1 <<0); PLL Ieslēgt
PLLCON_PLLC EQU (1 <<1); PLL Connect
PLLCFG_MSEL EQU (0x1F <<0); PLL reizulis
PLLCFG_PSEL EQU (0x03 <<5); PLL Divider
PLLSTAT_PLOCK EQU (1 <<10); PLL Lock Status
; / / <e> PLL Setup
; / / <o1.0..4> MSEL: PLL reizulis Selection
; / / <1-32> <# -1>
; / / M Value
; / / <o1.5..6> PSEL: PLL Divider Selection
; / / <0 => 1 <1 => 2 <2 => 4 <3 => 8
; / / P vērtība
; / / </ E>
PLL_SETUP EQU 1
PLLCFG_Val EQU 0x00000024; Memory Accelerator modulis (MAM) definīcijas
MAM_BASE EQU 0xE01FC000; MAM Base Adrese
MAMCR_OFS EQU 0x00; MAM Control Offset
MAMTIM_OFS EQU 0x04; MAM Laika nobīde
; / / <e> MAM Setup
; / / <o1.0..1> MAM Control
; / / <0 => Disabled
; / / <1 => Daļēji Enabled
; / / <2 => Pilnībā Enabled
; / / Mode
; / / <o2.0..2> MAM Timing
; / / <0 => Rezervēts <1 => 1 <2 => 2 <3 => 3
; / / <4 => 4 <5 => 5 <6 => 6 <7 => 7
; / / Spoks Cycles
; / / </ E>
MAM_SETUP EQU 1
MAMCR_Val EQU 0x00000002
MAMTIM_Val EQU 0x00000004; External Memory Controller (EMC) definīcijas
EMC_BASE EQU 0xFFE00000; EMC Base Adrese
BCFG0_OFS EQU 0x00; BCFG0 Offset
BCFG1_OFS EQU 0x04; BCFG1 Offset
BCFG2_OFS EQU 0x08; BCFG2 Offset
BCFG3_OFS EQU 0x0C; BCFG3 Offset
; / / <e> External Memory Controller (EMC)
EMC_SETUP EQU 0
; / / <e> Banka Konfigurācija 0 (BCFG0)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG0_SETUP EQU 0
BCFG0_Val EQU 0x0000FBEF
; / / <e> Banka Konfigurācija 1 (BCFG1)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG1_SETUP EQU 0
BCFG1_Val EQU 0x0000FBEF
; / / <e> Banka Konfigurācija 2 (BCFG2)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG2_SETUP EQU 0
BCFG2_Val EQU 0x0000FBEF
; / / <e> Banka Konfigurācija 3 (BCFG3)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG3_SETUP EQU 0
BCFG3_Val EQU 0x0000FBEF
; / / </ E> beigas EMC; External Memory Pins definīcijas
PINSEL2 EQU 0xE002C014; PINSEL2 Adrese
PINSEL2_Val EQU 0x0E6149E4; CS0 .. 3, OE, WE, BLS0 .. 3,
; D0 .. 31, A2 .. 23, JTAG PinsPRESERVE8; Zonas definīcija un Entry Point
; Startup Kods ir jāsaista vispirms adrese, kurā tas paredz
skriet.
ZONA Atiestat CODE, Readonly
ARM; Izņēmums vektori
; Plānots Adrese 0.
; Absolute risinot režīmā jābūt izmantoti.
; Dummy KOPēJU, tiek īstenoti, kā bezgalīgas cilpas, ko var mainīt.
Vektori LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
NOP; Reserved Vector
LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0]; Vector no VicVectAddr
LDR PC, FIQ_Addr
IMPORTA OS_CPU_ARM_ExceptUndefInstrHndlr
IMPORTA OS_CPU_ARM_ExceptSwiHndlr
IMPORTA OS_CPU_ARM_ExceptPrefetchAbortHndlr
IMPORTA OS_CPU_ARM_ExceptDataAbortHndlr
IMPORTA OS_CPU_ARM_ExceptIrqHndlr
IMPORTA OS_CPU_ARM_ExceptFiqHndlrReset_Addr DCD Reset_Handler
Undef_Addr DCD OS_CPU_ARM_ExceptUndefInstrHndlr
SWI_Addr DCD OS_CPU_ARM_ExceptSwiHndlr
PAbt_Addr DCD OS_CPU_ARM_ExceptPrefetchAbortHndlr
DAbt_Addr DCD OS_CPU_ARM_ExceptDataAbortHndlr
nop
IRQ_Addr DCD OS_CPU_ARM_ExceptIrqHndlr
FIQ_Addr DCD OS_CPU_ARM_ExceptFiqHndlr
; Undef_Handler B Undef_Handler
; SWI_Handler B SWI_Handler
; PAbt_Handler B PAbt_Handler
; DAbt_Handler B DAbt_Handler
; IRQ_Handler B IRQ_Handler
; FIQ_Handler B FIQ_Handler; Reset Handler
EKSPORTA Reset_Handler
Reset_Handler; Setup External Memory Pins
Ja: DEF: EXTERNAL_MODE
LDR R0, = PINSEL2
LDR R1, = PINSEL2_Val
STR R1, [R0]
ENDIF; Setup External Memory Controller
IF EMC_SETUP <> 0
LDR R0, = EMC_BASE
IF BCFG0_SETUP <> 0
LDR R1, = BCFG0_Val
STR R1, [R0, # BCFG0_OFS]
ENDIF
IF BCFG1_SETUP <> 0
LDR R1, = BCFG1_Val
STR R1, [R0, # BCFG1_OFS]
ENDIF
IF BCFG2_SETUP <> 0
LDR R1, = BCFG2_Val
STR R1, [R0, # BCFG2_OFS]
ENDIF
IF BCFG3_SETUP <> 0
LDR R1, = BCFG3_Val
STR R1, [R0, # BCFG3_OFS]
ENDIF
ENDIF; EMC_SETUP; Setup VPBDIV
IF VPBDIV_SETUP <> 0
LDR R0, = VPBDIV
LDR R1, = VPBDIV_Val
STR R1, [R0]
ENDIF; Setup PLL
IF PLL_SETUP <> 0
LDR R0, = PLL_BASE
MOV R1, # 0xAA
MOV R2, # 0x55
; Konfigurēt un Iespējot PLL
MOV R3, # PLLCFG_Val
STR R3, [R0, # PLLCFG_OFS]
MOV R3, # PLLCON_PLLE
STR R3, [R0, # PLLCON_OFS]
STR R1, [R0, # PLLFEED_OFS]
STR R2, [R0, # PLLFEED_OFS]
,
Tad pagaidīt līdz PLL Slēgta
PLL_Loop LDR R3, [R0, # PLLSTAT_OFS]
ANDS R3, R3, # PLLSTAT_PLOCK
BEQ PLL_Loop
; Pārslēgt uz PLL Pulkstenis
MOV R3, # (PLLCON_PLLE: vai: PLLCON_PLLC)
STR R3, [R0, # PLLCON_OFS]
STR R1, [R0, # PLLFEED_OFS]
STR R2, [R0, # PLLFEED_OFS]
ENDIF; PLL_SETUP; Setup MAM
IF MAM_SETUP <> 0
LDR R0, = MAM_BASE
MOV R1, # MAMTIM_Val
STR R1, [R0, # MAMTIM_OFS]
MOV R1, # MAMCR_Val
STR R1, [R0, # MAMCR_OFS]
ENDIF; MAM_SETUP; Memory Kartēšanas (kad Interrupt vektori ir RAM)
MEMMAP EQU 0xE01FC040; Memory Kartēšanas Control
Ja: DEF: REMAP
LDR R0, = MEMMAP
Ja: DEF: EXTMEM_MODE
MOV R1, # 3
ELIF: DEF: RAM_MODE
MOV R1, # 2
VĒL
MOV R1, # 1
ENDIF
STR R1, [R0]
ENDIF; Inicializētu Interrupt System
; ...; Setup skursteni katram režīmam
LDR R0, = Stack_Top
; Enter Undefined Instruction Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_UND: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # UND_Stack_Size
; Enter pārtraukt Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_ABT: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # ABT_Stack_Size
; Enter FIQ Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_FIQ: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # FIQ_Stack_Size
; Enter IRQ Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_IRQ: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # IRQ_Stack_Size
; Enter uzraudzītājs Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_SVC: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # SVC_Stack_Size
; Ievadiet lietotāja režīmā un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_USR
Ja: DEF: __MICROLIB
EKSPORTA __initial_sp
VĒL
MOV SP, R0
SUB SL, SP, # USR_Stack_Size
ENDIF; Ievadiet C kods
IMPORTA __main
LDR R0, = __main
BX R0Ja: DEF: __MICROLIB
EKSPORTA __heap_base
EKSPORTA __heap_limit
VĒL
; User Sākotnējā skursteni & terehons
ZONA |. Teksts |, CODE, Readonly
IMPORTA __use_two_region_memory
EKSPORTA __user_initial_stackheap
__user_initial_stackheap
LDR R0, = Heap_Mem
LDR R1 = (Stack_Mem USR_Stack_Size)
LDR R2, = (Heap_Mem Heap_Size)
LDR R3, = Stack_Mem
BX LR
ENDIFEND
Es cenšos ostas UCOS uz LPC2103 izmantojot jaunākās kods, bet man joprojām nevar saņemt to darbu.
Man ir pārrakstīt manu kodu, lai ieslēgtu LCD fona ar un
bez UCOS.Kods bez UCOS tikai piezvanīt
BackLightingOn () un InitPort funkcijas, galvenais () un šo darbu
naudas sods, bet es vēlos, lai varētu saņemt UCOS darboties.Kodu zemāk redzams
uzdevums ir radīta, lai ieslēgtu fona un kavēšanās, OSTimeDlyHMSM ().
Kodu domāt satur vairākus uzdevumus, bet Man ir samazināta līdz vienai tāpēc es
var aprēķināt, kā nokļūt UCOS braukšanas par LPC2103, griežot uz
aizmugurē gaismas bet es neredzu problēmu kodu.
Kodekss par galveno kods ir redzams zemāk.
# ietver "LPC2103.h"
# ietver "os_cpu.h"
# ietver "cpu.h"
# ietver "app_cfg.h"
# ietver "ucos_ii.h"# define Fosc 16000000 / / Crystal
frekvences, 10MHz ~ 25MHzŁŹshould ir tādas pašas kā faktisko statusu.
# define Fcclk (Fosc * 3) / / System
frekvences, jābūt (1 ~ 32) daudzkārtņi Fosc, un tiem ir jābūt vienādām vai
mazāk nekā 60MHz.# define Fpclk (Fcclk / 4) * 1 / / VPB pulksteni
frekvences, jābūt 1a ˘ 2A ˘ 4 daudzkārtņi (Fcclk / 4).statiskā OS_STK AppTaskStartStk [APP_TASK_START_STK_SIZE];statiskā anulēts AppTaskStart (spēkā neesošs * p_arg);
anulēts tc3 (spēkā neesošs) (
T3IR = 1; / / Clear pārtraukt karogs
OSTimeTick ();
FIOPIN1 ^ = 0x08; / / debugging
VICVectAddr = 0; / / apstiprinājums Interrupt
)
anulēts StartTicker (spēkā neesošs) (
T3MR0 = Fpclk/OS_TICKS_PER_SEC-1; / / 1mSec = 15000-1 skaits ir 15
Mhz PCLK
T3MCR = 3; / / Interrupt un Atjaunot uz MR0
T3TCR = 1; / / Timer0 Ieslēgt
VICVectAddr0 = (neparakstīts garš) tc3; / / noteikts pārtraukt vektora 0
VICVectCntl0 = 0x20 | VIC_TIMER3; / / to izmantot Taimeris 0
Interrupt
VICIntEnable = 1 <<VIC_TIMER3; / / Enable Timer0 Interrupt
)anulēts BackLightingOn (spēkā neesošs) (
/ / BackLightingOnFlag = 1;
/ / BackLightingOnTimer = 0;
IOSET = 0x04000000;
FIOSET3 = 0x04;
)
anulēts Initport (spēkā neesošs) (
IODIR = 0x0C81000C;
FIODIR0 = 0x0C;
FIODIR2 = 0x81;
FIODIR3 = 0x0C;
FIOPIN2 = 0x00;
FIOPIN3 = 0x00;
FIODIR1 = 0x08;
FIOPIN1 = 0x00;
)anulēts BSP_IntDisAll (spēkā neesošs)
(
VICIntEnClr = 0xFFFFFFFFL; / *
Disable ALL pārtrauc * /
)
int galvenais (spēkā neesošs) (
BSP_IntDisAll (); / / izslēgt pārtrauc
OSInit ();OSTaskCreateExt (AppTaskStart, / * Izveidot
sākuma uzdevums * /
(spēkā neesošs *) 0,
(OS_STK *) & AppTaskStartStk [APP_TASK_START_STK_SIZE
- 1],
APP_TASK_START_PRIO,
APP_TASK_START_PRIO,
(OS_STK *) & AppTaskStartStk [0]
APP_TASK_START_STK_SIZE,
(spēkā neesošs *) 0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);OSStart ();
atpakaļ (0);
)statiskā anulēts AppTaskStart (spēkā neesošs * p_arg)
((spēkā neesošs) p_arg;
OS_CPU_InitExceptVect ();
SCS = 0x03;
ja (WDMOD & 0x04) (
WDMOD & = ~ 0x04;
)
StartTicker ();
/ / BSP_Init (); / *
Inicializ BSP funkcijas * /
Initport (); / / inicializētu ostām
/ * Izveidot pieteikumu uzdevumus
* /
while (1) (/ * Task iestāde,
vienmēr pastāv rakstisks kā bezgalīga cilpa.* /BackLightingOn (); / / Pagriezieties Fona apgaismojuma On
OSTimeDlyHMSM (0, 0, 0, 5);
)
)/ *
************************************************** ****************************** \
*************************
* OS_CPU_ExceptHndlr ()
*
* Apraksts: Rokas visiem izņēmumiem.
*
* Argumentu (s): except_id ARM izņēmums tips:
*
* OS_CPU_ARM_EXCEPT_RESET
0x00
* OS_CPU_ARM_EXCEPT_UNDEF_INSTR
0x01
* OS_CPU_ARM_EXCEPT_SWI
0x02
* OS_CPU_ARM_EXCEPT_PREFETCH_ABORT
0x03
* OS_CPU_ARM_EXCEPT_DATA_ABORT
0x04
* OS_CPU_ARM_EXCEPT_ADDR_ABORT
0x05
* OS_CPU_ARM_EXCEPT_IRQ
0x06
* OS_CPU_ARM_EXCEPT_FIQ
0x07
*
* Return (s): nav.
*
* Zvanītāju (s): OS_CPU_ARM_EXCEPT_HANDLER (), kas ir deklarētas
os_cpu_a.s.
************************************************** ****************************** \
*************************
* /
anulēts OS_CPU_ExceptHndlr (CPU_INT32U except_id)
(
CPU_FNCT_VOID pfnct;ja (except_id == OS_CPU_ARM_EXCEPT_IRQ) (
pfnct = (CPU_FNCT_VOID) VICVectAddr; / *
Lasīt pārtraukt vektors no Vic * /
while (pfnct! = (CPU_FNCT_VOID) 0) (/ *
Pārliecinieties, ka mums nav null pointers * /
(* pfnct) (); / *
Izpildīt ISR par pārtraukumu ierīce * /
VICVectAddr = 1; / *
Acknowlege ar Vic pārtraukt * /
pfnct = (CPU_FNCT_VOID) VICVectAddr; / *
Lasīt pārtraukt vektors no Vic * /
)
) Cits (
/ *
Infinite loop par citiem izņēmumiem.* /
/ *
Jāaizstāj ar citām uzvedība (atsāknēšana uc) * /
while (1) (
;
)
)
)Pievienots pēc 46 sekundes:Mans starta skripts ir parādīts zemāk.
;/************************************************ *****************************/
; / * STARTUP.S: Startup failu Philips LPC2000
* /
;/************************************************ *****************************/
; / * <<<Izmantojiet Konfigurācija Wizard in Context Menu>>>
* /
;/************************************************ *****************************/
; / * Šis fails ir daļa no uVision / ARM izstrādes instrumentārijs.
* /
; / * Copyright (c) 2005-2007 Keil Software.All rights reserved.
* /
; / * Šo programmatūru var izmantot tikai saskaņā ar noteikumiem par derīgu,
strāva, * /
; / * Gala lietotāja licenci no KEIL par saderīgu versiju KEIL
programmatūra * /
; / * Attīstības instrumenti.Nekas cits dod Jums tiesības izmantot šo
programmatūru.* /
;/************************************************ *****************************/; / *
* The STARTUP.S kods ir izpildīts pēc CPU Reset.Šis fails var būt
* Tulkots ar šādiem SET simboliem.In uVision šiem SET
* Simboli ir ieraksta opcijas - ASM - Noteikt.
*
* REMAP: ja iestatītu starta kods initializes reģistrā MEMMAP
* Kuras overwrites uzstādījumus no CPU konfigurācija pins.Par
* Starta un pārtraukt vektori ir remapped no:
* 0x00000000 noklusējuma (nav remapped)
* 0x80000000, kad EXTMEM_MODE tiek izmantots
* 0x40000000, kad RAM_MODE tiek izmantots
*
* EXTMEM_MODE: ja noteikta ierīce ir konfigur koda izpildi
* No ārējiem atmiņas sākot adrese 0x80000000.
*
* RAM_MODE: ja noteikta ierīce ir konfigur koda izpildi
; * No on-chip RAM sākot ar adresi 0x40000000.
*
* EXTERNAL_MODE: ja iestatītu PIN2SEL vērtības ir rakstisks, kas ļauj
* Ārējo BUS pie starta.
* /; Standard definīcijas Mode bitiem un Interrupt ( "I & F) karogi PSRs
Mode_USR EQU 0x10
Mode_FIQ EQU 0x11
Mode_IRQ EQU 0x12
Mode_SVC EQU 0x13
Mode_ABT EQU 0x17
Mode_UND EQU 0x1B
Mode_SYS EQU 0x1F
I_Bit EQU 0x80, kad es bits ir iestatīts, IRQ ir
invalīdiem
F_Bit EQU 0x40, kad F bits ir iestatīts, FIQ ir
invalīdiem; / / <h> Skursteņa konfigurācija (skursteņa izmērus baitos)
; / / <o0> Undefined Mode <0x0-0xFFFFFFFF: 8>
; / / <o1> Uzraudzītājs Mode <0x0-0xFFFFFFFF: 8>
; / / <o2> Pārtraukt Mode <0x0-0xFFFFFFFF: 8>
; / / <o3> Ātrās Interrupt Mode <0x0-0xFFFFFFFF: 8>
; / / <o4> Interrupt Mode <0x0-0xFFFFFFFF: 8>
; / / <o5> Lietotāji / System Mode <0x0-0xFFFFFFFF: 8>
; / / </ H>
UND_Stack_Size EQU 0x00000000
SVC_Stack_Size EQU 0x00000008
ABT_Stack_Size EQU 0x00000000
FIQ_Stack_Size EQU 0x00000000
IRQ_Stack_Size EQU 0x00000080
USR_Stack_Size EQU 0x00000400
ISR_Stack_Size EQU (UND_Stack_Size SVC_Stack_Size
ABT_Stack_Size \
FIQ_Stack_Size IRQ_Stack_Size)
ZONA dūmeni, NOINIT, READWRITE,
centrēšanai = 3
Stack_Mem SPACE USR_Stack_Size
__initial_sp SPACE ISR_Stack_Size
Stack_Top; / / <h> Terehons Konfigurācija
; / / <o> Terehons Lielums (baitos) <0x0-0xFFFFFFFF>
; / / </ H>
Heap_Size EQU 0x00000000
ZONA terehons, NOINIT, READWRITE,
centrēšanai = 3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit; VPBDIV definīcijas
VPBDIV EQU 0xE01FC100; VPBDIV Adrese
; / / <e> VPBDIV Setup
; / / Peripheral Bus Clock Rate
; / / <o1.0..1> VPBDIV: VPB Pulkstenis
; / / <0 => VPB Clock = CPU Pulkstenis / 4
; / / <1 => VPB Clock = CPU Pulkstenis
; / / <2 => VPB Clock = CPU Pulkstenis / 2
; / / <o1.4..5> XCLKDIV: XCLK Pin
; / / <0 => XCLK Pin = CPU Pulkstenis / 4
; / / <1 => XCLK Pin = CPU Pulkstenis
; / / <2 => XCLK Pin = CPU Pulkstenis / 2
; / / </ E>
VPBDIV_SETUP EQU 0
VPBDIV_Val EQU 0x00000000; Phase Slēgta Cikls (PLL) definīcijas
PLL_BASE EQU 0xE01FC080; PLL Base Adrese
PLLCON_OFS EQU 0x00; PLL Control Offset
PLLCFG_OFS EQU 0x04; PLL Konfigurācija Offset
PLLSTAT_OFS EQU 0x08; PLL Statuss Offset
PLLFEED_OFS EQU 0x0C; PLL Feed Offset
PLLCON_PLLE EQU (1 <<0); PLL Ieslēgt
PLLCON_PLLC EQU (1 <<1); PLL Connect
PLLCFG_MSEL EQU (0x1F <<0); PLL reizulis
PLLCFG_PSEL EQU (0x03 <<5); PLL Divider
PLLSTAT_PLOCK EQU (1 <<10); PLL Lock Status
; / / <e> PLL Setup
; / / <o1.0..4> MSEL: PLL reizulis Selection
; / / <1-32> <# -1>
; / / M Value
; / / <o1.5..6> PSEL: PLL Divider Selection
; / / <0 => 1 <1 => 2 <2 => 4 <3 => 8
; / / P vērtība
; / / </ E>
PLL_SETUP EQU 1
PLLCFG_Val EQU 0x00000024; Memory Accelerator modulis (MAM) definīcijas
MAM_BASE EQU 0xE01FC000; MAM Base Adrese
MAMCR_OFS EQU 0x00; MAM Control Offset
MAMTIM_OFS EQU 0x04; MAM Laika nobīde
; / / <e> MAM Setup
; / / <o1.0..1> MAM Control
; / / <0 => Disabled
; / / <1 => Daļēji Enabled
; / / <2 => Pilnībā Enabled
; / / Mode
; / / <o2.0..2> MAM Timing
; / / <0 => Rezervēts <1 => 1 <2 => 2 <3 => 3
; / / <4 => 4 <5 => 5 <6 => 6 <7 => 7
; / / Spoks Cycles
; / / </ E>
MAM_SETUP EQU 1
MAMCR_Val EQU 0x00000002
MAMTIM_Val EQU 0x00000004; External Memory Controller (EMC) definīcijas
EMC_BASE EQU 0xFFE00000; EMC Base Adrese
BCFG0_OFS EQU 0x00; BCFG0 Offset
BCFG1_OFS EQU 0x04; BCFG1 Offset
BCFG2_OFS EQU 0x08; BCFG2 Offset
BCFG3_OFS EQU 0x0C; BCFG3 Offset
; / / <e> External Memory Controller (EMC)
EMC_SETUP EQU 0
; / / <e> Banka Konfigurācija 0 (BCFG0)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG0_SETUP EQU 0
BCFG0_Val EQU 0x0000FBEF
; / / <e> Banka Konfigurācija 1 (BCFG1)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG1_SETUP EQU 0
BCFG1_Val EQU 0x0000FBEF
; / / <e> Banka Konfigurācija 2 (BCFG2)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG2_SETUP EQU 0
BCFG2_Val EQU 0x0000FBEF
; / / <e> Banka Konfigurācija 3 (BCFG3)
; / / <o1.0..3> IDCY: dīkstāvei Cycles <0-15>
; / / <o1.5..9> WST1: Sagaidiet States 1 <0-31>
; / / <o1.11..15> WST2: Sagaidiet Valstis 2 <0-31>
; / / <o1.10> RBLE:
lasīt BYTE Lane Ieslēgt
; / / <o1.26> WP: Rakstīt Protect
; / / <o1.27> BM: pārsprāgt ROM
; / / <o1.28..29> MW: Memory Platums <0 => 8-bit <1 => 16-bit
; / / <2 => 32-bit <3 => Rezervēts
; / / </ E>
BCFG3_SETUP EQU 0
BCFG3_Val EQU 0x0000FBEF
; / / </ E> beigas EMC; External Memory Pins definīcijas
PINSEL2 EQU 0xE002C014; PINSEL2 Adrese
PINSEL2_Val EQU 0x0E6149E4; CS0 .. 3, OE, WE, BLS0 .. 3,
; D0 .. 31, A2 .. 23, JTAG PinsPRESERVE8; Zonas definīcija un Entry Point
; Startup Kods ir jāsaista vispirms adrese, kurā tas paredz
skriet.
ZONA Atiestat CODE, Readonly
ARM; Izņēmums vektori
; Plānots Adrese 0.
; Absolute risinot režīmā jābūt izmantoti.
; Dummy KOPēJU, tiek īstenoti, kā bezgalīgas cilpas, ko var mainīt.
Vektori LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
NOP; Reserved Vector
LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0]; Vector no VicVectAddr
LDR PC, FIQ_Addr
IMPORTA OS_CPU_ARM_ExceptUndefInstrHndlr
IMPORTA OS_CPU_ARM_ExceptSwiHndlr
IMPORTA OS_CPU_ARM_ExceptPrefetchAbortHndlr
IMPORTA OS_CPU_ARM_ExceptDataAbortHndlr
IMPORTA OS_CPU_ARM_ExceptIrqHndlr
IMPORTA OS_CPU_ARM_ExceptFiqHndlrReset_Addr DCD Reset_Handler
Undef_Addr DCD OS_CPU_ARM_ExceptUndefInstrHndlr
SWI_Addr DCD OS_CPU_ARM_ExceptSwiHndlr
PAbt_Addr DCD OS_CPU_ARM_ExceptPrefetchAbortHndlr
DAbt_Addr DCD OS_CPU_ARM_ExceptDataAbortHndlr
nop
IRQ_Addr DCD OS_CPU_ARM_ExceptIrqHndlr
FIQ_Addr DCD OS_CPU_ARM_ExceptFiqHndlr
; Undef_Handler B Undef_Handler
; SWI_Handler B SWI_Handler
; PAbt_Handler B PAbt_Handler
; DAbt_Handler B DAbt_Handler
; IRQ_Handler B IRQ_Handler
; FIQ_Handler B FIQ_Handler; Reset Handler
EKSPORTA Reset_Handler
Reset_Handler; Setup External Memory Pins
Ja: DEF: EXTERNAL_MODE
LDR R0, = PINSEL2
LDR R1, = PINSEL2_Val
STR R1, [R0]
ENDIF; Setup External Memory Controller
IF EMC_SETUP <> 0
LDR R0, = EMC_BASE
IF BCFG0_SETUP <> 0
LDR R1, = BCFG0_Val
STR R1, [R0, # BCFG0_OFS]
ENDIF
IF BCFG1_SETUP <> 0
LDR R1, = BCFG1_Val
STR R1, [R0, # BCFG1_OFS]
ENDIF
IF BCFG2_SETUP <> 0
LDR R1, = BCFG2_Val
STR R1, [R0, # BCFG2_OFS]
ENDIF
IF BCFG3_SETUP <> 0
LDR R1, = BCFG3_Val
STR R1, [R0, # BCFG3_OFS]
ENDIF
ENDIF; EMC_SETUP; Setup VPBDIV
IF VPBDIV_SETUP <> 0
LDR R0, = VPBDIV
LDR R1, = VPBDIV_Val
STR R1, [R0]
ENDIF; Setup PLL
IF PLL_SETUP <> 0
LDR R0, = PLL_BASE
MOV R1, # 0xAA
MOV R2, # 0x55
; Konfigurēt un Iespējot PLL
MOV R3, # PLLCFG_Val
STR R3, [R0, # PLLCFG_OFS]
MOV R3, # PLLCON_PLLE
STR R3, [R0, # PLLCON_OFS]
STR R1, [R0, # PLLFEED_OFS]
STR R2, [R0, # PLLFEED_OFS]
,
Tad pagaidīt līdz PLL Slēgta
PLL_Loop LDR R3, [R0, # PLLSTAT_OFS]
ANDS R3, R3, # PLLSTAT_PLOCK
BEQ PLL_Loop
; Pārslēgt uz PLL Pulkstenis
MOV R3, # (PLLCON_PLLE: vai: PLLCON_PLLC)
STR R3, [R0, # PLLCON_OFS]
STR R1, [R0, # PLLFEED_OFS]
STR R2, [R0, # PLLFEED_OFS]
ENDIF; PLL_SETUP; Setup MAM
IF MAM_SETUP <> 0
LDR R0, = MAM_BASE
MOV R1, # MAMTIM_Val
STR R1, [R0, # MAMTIM_OFS]
MOV R1, # MAMCR_Val
STR R1, [R0, # MAMCR_OFS]
ENDIF; MAM_SETUP; Memory Kartēšanas (kad Interrupt vektori ir RAM)
MEMMAP EQU 0xE01FC040; Memory Kartēšanas Control
Ja: DEF: REMAP
LDR R0, = MEMMAP
Ja: DEF: EXTMEM_MODE
MOV R1, # 3
ELIF: DEF: RAM_MODE
MOV R1, # 2
VĒL
MOV R1, # 1
ENDIF
STR R1, [R0]
ENDIF; Inicializētu Interrupt System
; ...; Setup skursteni katram režīmam
LDR R0, = Stack_Top
; Enter Undefined Instruction Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_UND: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # UND_Stack_Size
; Enter pārtraukt Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_ABT: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # ABT_Stack_Size
; Enter FIQ Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_FIQ: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # FIQ_Stack_Size
; Enter IRQ Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_IRQ: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # IRQ_Stack_Size
; Enter uzraudzītājs Mode un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_SVC: vai: I_Bit: vai: F_Bit
MOV SP, R0
SUB R0, R0, # SVC_Stack_Size
; Ievadiet lietotāja režīmā un noteikt tās skursteni Pointer
MSR CPSR_c, # Mode_USR
Ja: DEF: __MICROLIB
EKSPORTA __initial_sp
VĒL
MOV SP, R0
SUB SL, SP, # USR_Stack_Size
ENDIF; Ievadiet C kods
IMPORTA __main
LDR R0, = __main
BX R0Ja: DEF: __MICROLIB
EKSPORTA __heap_base
EKSPORTA __heap_limit
VĒL
; User Sākotnējā skursteni & terehons
ZONA |. Teksts |, CODE, Readonly
IMPORTA __use_two_region_memory
EKSPORTA __user_initial_stackheap
__user_initial_stackheap
LDR R0, = Heap_Mem
LDR R1 = (Stack_Mem USR_Stack_Size)
LDR R2, = (Heap_Mem Heap_Size)
LDR R3, = Stack_Mem
BX LR
ENDIFEND