H
hbaocr
Guest
halo, sve prijatelj
Plz, objasniti ovaj kod ispod, ne znam kako to funkcionira.Ako je više od dva fiq zahtjev, kako mogu to raditi, i kako mogu prepoznati CPU jezgre koja prekida izvor reagira.
pogled na moj broj u redu oslikani crvenom bojom,
možete me proglasiti više od dva retka kao što je ovaj
ex:
void FIQ_Handler (void) __fiq;void ADC_handler (void) __fiq;
I ako ja mogu to učiniti, kako se može prepoznati koji CPU fiq prekida rutinu odgovoriti za koji ometaju kada se izvor je odgovorio daŠifra:
/************************************************* *** /
/ * Primjeri programa za "CP-JR ARM7 USB-LPC2148" * /
/ * Target MCU: Philips ARM7-LPC2148 * /
/ *: X-TAL: 12.00 MHz * /
/ *: Pokreni Speed 60,00 MHz (s PLL) * /
/ *: PLL Setup = M (5), P (2) * /
/ *: VPB Clock = CPU Clock = 60,00 MHz * /
/ * Keil Urednik: uVision3 V3.03a * /
/ * Compiler: Keil CARM V2.50a * /
/ * Napravi By: Eakachai Makarn (WWW.ETT.CO.TH) * /
/ * Last Update: 17/May/2006 * /
/ * Funkcija: Primjer korištenja UART1 Show fiq (EINT1) * /
/************************************************* *** /
/ / Ispis poruke na UART1 (9600, N, 8,1)
/ / Korišteno GPIO0.14 Trigger Prekid (fiq Vector)
/ / Press SW-opterećenje za Trigger Vanjski Interrup-1# include "LPC214x.H" / / LPC2148 MPU Registracija
# include <stdio.h> / / za rabljene funkcije printf/ * Pototype dio * /
void init_serial0 (void); / / Initil UART-0
int putchar (int ch); / / Put do Char UART-0
int getchar (void); / / Dohvaćanje Char Od UART-0
[color = red] void FIQ_Handler (void) __fiq; [/ color] / / EINT1 (fiq) Interrupt Serviceint main (void)
(
init_serial0 (); / / Initilial UART0 = 9600, N, 8,1/ / Početna External Interrupt-1 (GPIO0.14)
EXTMODE | = 0x02; / / Select External Interrupt-1 = Edge Select Trigger
EXTPOLAR | = 0x02; / / Select External Interrupt-1 = Rising Edge Trigger
PINSEL0 | = 0x20000000; / / Set GPIO0.14 = EXTINT1 Interrupt
Ugašen = 0x00000002; / / Clear Vanjski Interrupt1 Zastava/ / Početna prekidni vektor
VICIntSelect = 0x00008000; / / Select Interrupt-15 (External Interrupt1)
VICIntEnable = 0x00008000; / / Interrupt Enable-15 (External Interrupt1)printf ( "CP-JRARM7 USB-LPC2148 ... Primjer fiq Prekid \ n ");// poziva funkcije printf
printf ( "Interrupt-1 Rising Edge Trig By GPIO0.14 \ n"); / / Poziv funkcije printf
printf ( "Press Switch-opterećenje za Trigger Interrupt-1 \ n \ n"); / / Poziv funkcije printf
printf ( "Hello from ...... glavna funkcija \ n"); / / Poziv funkcije printf/ / Petlja Ovdje Čekaj Prekini
while (1);
)/******************************/
/ * Initial UART0 = 9600, N, 8,1 * /
/ * VPB (pclk) = 60,00 MHz * /
/******************************/
void init_serial0 (void)
(
PINSEL0 & = 0xFFFFFFF0; / / Reset P0.0, P0.1 Pin Config
PINSEL0 | = 0x00000001; / / Select P0.0 = TxD (UART0)
PINSEL0 | = 0x00000004; / / Select P0.1 = RxD (UART0)U0LCR & = 0xFC; / / Reset Riječ Izaberi (1:0)
U0LCR | = 0x03; / / podatkovni bit = 8 bitova
U0LCR & = 0xFB; / / Stop Bit = 1-bitni
U0LCR & = 0xF7; / / Paritet = Onemogući
U0LCR & = 0xBF; / / Disable Break Control
U0LCR | = 0x80; / / Enable Programiranje divisor Latches/ / U0DLM: U0DLL = 60,00 MHz / [16 x Baud]
/ / = 60,00 MHz / [16 x 9600]
/ / = 390,6 = 391 = 0187H
U0DLM = 0x01; / / Program djelitelj Latch (391) za 9.600 Baud
U0DLL = 0x87;U0LCR & = 0x7F; / / Disable Programiranje divisor LatchesU0FCR | = 0x01; / / FIF0 Omogući
U0FCR | = 0x02; / / RX FIFO Reset
U0FCR | = 0x04; / / TX FIFO Reset
U0FCR & = 0x3F;
)/****************************/
/ * Write znak UART0 * /
/****************************/
int putchar (int ch)
(
if (ch == '\ n')
(
while (! (U0LSR & 0x20)); / / čekati TXD Buffer Isprazni
U0THR = 0x0D; / / Write CR
)
while (! (U0LSR & 0x20)); / / čekati TXD Buffer Isprazni
return (U0THR = ch); / / Write Character
)/*****************************/
/ * Pročitajte lik iz UART0 * /
/*****************************/
int getchar (void)
(
while (! (U0LSR & 0x01)); / / čekati RXD Receive Data Ready
return (U0RBR); / / Get Receice Data & Return
)
/********************************/
/ * External Interrupt-1 Service * /
/********************************/
void FIQ_Handler (void) __fiq
(
printf ( "Hello from ...... External Interrupt-1 \ n"); / / Poziv funkcije printf
Ugašen = 0x00000002; / / Clear Vanjski Interrupt1 Zastava
)
Plz, objasniti ovaj kod ispod, ne znam kako to funkcionira.Ako je više od dva fiq zahtjev, kako mogu to raditi, i kako mogu prepoznati CPU jezgre koja prekida izvor reagira.
pogled na moj broj u redu oslikani crvenom bojom,
možete me proglasiti više od dva retka kao što je ovaj
ex:
void FIQ_Handler (void) __fiq;void ADC_handler (void) __fiq;
I ako ja mogu to učiniti, kako se može prepoznati koji CPU fiq prekida rutinu odgovoriti za koji ometaju kada se izvor je odgovorio daŠifra:
/************************************************* *** /
/ * Primjeri programa za "CP-JR ARM7 USB-LPC2148" * /
/ * Target MCU: Philips ARM7-LPC2148 * /
/ *: X-TAL: 12.00 MHz * /
/ *: Pokreni Speed 60,00 MHz (s PLL) * /
/ *: PLL Setup = M (5), P (2) * /
/ *: VPB Clock = CPU Clock = 60,00 MHz * /
/ * Keil Urednik: uVision3 V3.03a * /
/ * Compiler: Keil CARM V2.50a * /
/ * Napravi By: Eakachai Makarn (WWW.ETT.CO.TH) * /
/ * Last Update: 17/May/2006 * /
/ * Funkcija: Primjer korištenja UART1 Show fiq (EINT1) * /
/************************************************* *** /
/ / Ispis poruke na UART1 (9600, N, 8,1)
/ / Korišteno GPIO0.14 Trigger Prekid (fiq Vector)
/ / Press SW-opterećenje za Trigger Vanjski Interrup-1# include "LPC214x.H" / / LPC2148 MPU Registracija
# include <stdio.h> / / za rabljene funkcije printf/ * Pototype dio * /
void init_serial0 (void); / / Initil UART-0
int putchar (int ch); / / Put do Char UART-0
int getchar (void); / / Dohvaćanje Char Od UART-0
[color = red] void FIQ_Handler (void) __fiq; [/ color] / / EINT1 (fiq) Interrupt Serviceint main (void)
(
init_serial0 (); / / Initilial UART0 = 9600, N, 8,1/ / Početna External Interrupt-1 (GPIO0.14)
EXTMODE | = 0x02; / / Select External Interrupt-1 = Edge Select Trigger
EXTPOLAR | = 0x02; / / Select External Interrupt-1 = Rising Edge Trigger
PINSEL0 | = 0x20000000; / / Set GPIO0.14 = EXTINT1 Interrupt
Ugašen = 0x00000002; / / Clear Vanjski Interrupt1 Zastava/ / Početna prekidni vektor
VICIntSelect = 0x00008000; / / Select Interrupt-15 (External Interrupt1)
VICIntEnable = 0x00008000; / / Interrupt Enable-15 (External Interrupt1)printf ( "CP-JRARM7 USB-LPC2148 ... Primjer fiq Prekid \ n ");// poziva funkcije printf
printf ( "Interrupt-1 Rising Edge Trig By GPIO0.14 \ n"); / / Poziv funkcije printf
printf ( "Press Switch-opterećenje za Trigger Interrupt-1 \ n \ n"); / / Poziv funkcije printf
printf ( "Hello from ...... glavna funkcija \ n"); / / Poziv funkcije printf/ / Petlja Ovdje Čekaj Prekini
while (1);
)/******************************/
/ * Initial UART0 = 9600, N, 8,1 * /
/ * VPB (pclk) = 60,00 MHz * /
/******************************/
void init_serial0 (void)
(
PINSEL0 & = 0xFFFFFFF0; / / Reset P0.0, P0.1 Pin Config
PINSEL0 | = 0x00000001; / / Select P0.0 = TxD (UART0)
PINSEL0 | = 0x00000004; / / Select P0.1 = RxD (UART0)U0LCR & = 0xFC; / / Reset Riječ Izaberi (1:0)
U0LCR | = 0x03; / / podatkovni bit = 8 bitova
U0LCR & = 0xFB; / / Stop Bit = 1-bitni
U0LCR & = 0xF7; / / Paritet = Onemogući
U0LCR & = 0xBF; / / Disable Break Control
U0LCR | = 0x80; / / Enable Programiranje divisor Latches/ / U0DLM: U0DLL = 60,00 MHz / [16 x Baud]
/ / = 60,00 MHz / [16 x 9600]
/ / = 390,6 = 391 = 0187H
U0DLM = 0x01; / / Program djelitelj Latch (391) za 9.600 Baud
U0DLL = 0x87;U0LCR & = 0x7F; / / Disable Programiranje divisor LatchesU0FCR | = 0x01; / / FIF0 Omogući
U0FCR | = 0x02; / / RX FIFO Reset
U0FCR | = 0x04; / / TX FIFO Reset
U0FCR & = 0x3F;
)/****************************/
/ * Write znak UART0 * /
/****************************/
int putchar (int ch)
(
if (ch == '\ n')
(
while (! (U0LSR & 0x20)); / / čekati TXD Buffer Isprazni
U0THR = 0x0D; / / Write CR
)
while (! (U0LSR & 0x20)); / / čekati TXD Buffer Isprazni
return (U0THR = ch); / / Write Character
)/*****************************/
/ * Pročitajte lik iz UART0 * /
/*****************************/
int getchar (void)
(
while (! (U0LSR & 0x01)); / / čekati RXD Receive Data Ready
return (U0RBR); / / Get Receice Data & Return
)
/********************************/
/ * External Interrupt-1 Service * /
/********************************/
void FIQ_Handler (void) __fiq
(
printf ( "Hello from ...... External Interrupt-1 \ n"); / / Poziv funkcije printf
Ugašen = 0x00000002; / / Clear Vanjski Interrupt1 Zastava
)