H
hbaocr
Guest
hej, alle ven
Plz, forklare denne koden nedenfor, jeg ved ikke, hvordan det arbejde.Hvis mere end to FIQ anmodning, hvordan kan det arbejde, og hvordan kan CPU kerne genkende, som afbryder kilde reagerer.
kig på min kode på rækken malet rød farve,
kan erklære mig mere end to træk som dette
ex:
void FIQ_Handler (void) __fiq;void ADC_handler (void) __fiq;
Og hvis jeg kan gøre det, hvordan kan CPU genkende som FIQ Interrupt rutine reagere, som afbryder kilde, når det er besvaretKode:
/************************************************* *** /
/ * Eksempler Program For "CP-JR ARM7 USB-LPC2148" * /
/ * Target MCU: Philips ARM7-LPC2148 * /
/ *: X-TAL: 12,00 MHz * /
/ *: Kørselshastighed 60,00 MHz (Med PLL) * /
/ *: PLL Setup = M (5), P (2) * /
/ *: VPb Clock = CPU Clock = 60,00 MHz * /
/ * Keil Redaktør: uVision3 V3.03a * /
/ * Compiler: Keil CARM V2.50a * /
/ * Opret Af: Eakachai Makarn (WWW.ETT.CO.TH) * /
/ * Last Update: 17/May/2006 * /
/ * Function: Eksempel Brug UART1 Vis FIQ (EINT1) * /
/************************************************* *** /
/ / Print Besked til UART1 (9600, N, 8,1)
/ / Brugt GPIO0.14 Trigger Interrupt (FIQ Vector)
/ / Presse SW-belastning i Trigger Eksterne Interrup-1# include "LPC214x.H" / / LPC2148 MCU Register
# include <stdio.h> / / For brugte funktion printf/ * Pototype afsnittet * /
void init_serial0 (void); / / Initil UART-0
int putchar (int ch); / / Put Char til UART-0
int getchar (void); / / Get Char Fra UART-0
[color = red] void FIQ_Handler (void) __fiq; [/ color] / / EINT1 (FIQ) Interrupt Serviceint main (void)
(
init_serial0 (); / / Initilial UART0 = 9600, N, 8,1/ / Initial Eksterne Interrupt-1 (GPIO0.14)
EXTMODE | = 0x02; / / Vælg eksterne Interrupt-1 = Edge Vælg Trigger
EXTPOLAR | = 0x02; / / Vælg eksterne Interrupt-1 = Rising Edge Trigger
PINSEL0 | = 0x20000000; / / Set GPIO0.14 = EXTINT1 Interrupt
Uddød = 0x00000002; / / Clear Eksterne Interrupt1 flag/ / Initial Interrupt Vector
VICIntSelect = 0x00008000; / / Select Interrupt-15 (Eksterne Interrupt1)
VICIntEnable = 0x00008000; / / Aktiver Interrupt-15 (Eksterne Interrupt1)printf ( "CP-JRARM7 USB-LPC2148 ... Eksempel FIQ Interrupt \ n ");// Call printf Funktion
printf ( "Interrupt-1 Rising Edge Trig Ved GPIO0.14 \ n"); / / Call printf Funktion
printf ( "Tryk på Switch-belastning i Trigger Interrupt-1 \ n \ n"); / / Call printf Funktion
printf ( "Hello Fra ...... hovedfunktion \ n"); / / Call printf Funktion/ / Loop Her Vent Interrupt
while (1);
)/******************************/
/ * Initial UART0 = 9600, N, 8,1 * /
/ * VPb (pclk) = 60,00 MHz * /
/******************************/
void init_serial0 (void)
(
PINSEL0 & = 0xFFFFFFF0; / / Nulstil P0.0, P0.1 Pin Config
PINSEL0 | = 0x00000001; / / Select P0.0 = TxD (UART0)
PINSEL0 | = 0x00000004; / / Select P0.1 = RxD (UART0)U0LCR & = 0xFC; / / Nulstil Word Vælg (1:0)
U0LCR | = 0x03; / / Data Bit = 8 bit
U0LCR & = 0xFB; / / Stop Bit = 1 Bit
U0LCR & = 0xF7; / / Parity = Deaktiver
U0LCR & = 0xBF; / / Disable Break Control
U0LCR | = 0x80; / / Aktiver Programmering af Divisor Latches/ / U0DLM: U0DLL = 60,00 MHz / [16 x Baud]
/ / = 60,00 MHz / [16 x 9600]
/ / = 390,6 = 391 = 0187H
U0DLM = 0x01; / / Program Divisor Latch (391) til 9600 Baud
U0DLL = 0x87;U0LCR & = 0x7F; / / Disable Programmering af Divisor LatchesU0FCR | = 0x01; / / FIF0 Aktiver
U0FCR | = 0x02; / / RX FIFO Nulstil
U0FCR | = 0x04; / / TX FIFO Nulstil
U0FCR & = 0x3F;
)/****************************/
/ * Skriv Tegn Til UART0 * /
/****************************/
int putchar (int ch)
(
if (ch == '\ n')
(
while (! (U0LSR & 0x20)); / / Vent TXD Buffer Empty
U0THR = 0x0D; / / Skriv CR
)
while (! (U0LSR & 0x20)); / / Vent TXD Buffer Empty
return (U0THR = ch); / / Skriv Character
)/*****************************/
/ * Læs Character Fra UART0 * /
/*****************************/
int getchar (void)
(
while (! (U0LSR & 0x01)); / / Vent RXD Modtag data Ready
return (U0RBR); / / Get Receice Data & Retur
)
/********************************/
/ * Eksterne Interrupt-1 Service * /
/********************************/
void FIQ_Handler (void) __fiq
(
printf ( "Hello Fra ...... Eksterne Interrupt-1 \ n"); / / Call printf Funktion
Uddød = 0x00000002; / / Clear Eksterne Interrupt1 flag
)
Plz, forklare denne koden nedenfor, jeg ved ikke, hvordan det arbejde.Hvis mere end to FIQ anmodning, hvordan kan det arbejde, og hvordan kan CPU kerne genkende, som afbryder kilde reagerer.
kig på min kode på rækken malet rød farve,
kan erklære mig mere end to træk som dette
ex:
void FIQ_Handler (void) __fiq;void ADC_handler (void) __fiq;
Og hvis jeg kan gøre det, hvordan kan CPU genkende som FIQ Interrupt rutine reagere, som afbryder kilde, når det er besvaretKode:
/************************************************* *** /
/ * Eksempler Program For "CP-JR ARM7 USB-LPC2148" * /
/ * Target MCU: Philips ARM7-LPC2148 * /
/ *: X-TAL: 12,00 MHz * /
/ *: Kørselshastighed 60,00 MHz (Med PLL) * /
/ *: PLL Setup = M (5), P (2) * /
/ *: VPb Clock = CPU Clock = 60,00 MHz * /
/ * Keil Redaktør: uVision3 V3.03a * /
/ * Compiler: Keil CARM V2.50a * /
/ * Opret Af: Eakachai Makarn (WWW.ETT.CO.TH) * /
/ * Last Update: 17/May/2006 * /
/ * Function: Eksempel Brug UART1 Vis FIQ (EINT1) * /
/************************************************* *** /
/ / Print Besked til UART1 (9600, N, 8,1)
/ / Brugt GPIO0.14 Trigger Interrupt (FIQ Vector)
/ / Presse SW-belastning i Trigger Eksterne Interrup-1# include "LPC214x.H" / / LPC2148 MCU Register
# include <stdio.h> / / For brugte funktion printf/ * Pototype afsnittet * /
void init_serial0 (void); / / Initil UART-0
int putchar (int ch); / / Put Char til UART-0
int getchar (void); / / Get Char Fra UART-0
[color = red] void FIQ_Handler (void) __fiq; [/ color] / / EINT1 (FIQ) Interrupt Serviceint main (void)
(
init_serial0 (); / / Initilial UART0 = 9600, N, 8,1/ / Initial Eksterne Interrupt-1 (GPIO0.14)
EXTMODE | = 0x02; / / Vælg eksterne Interrupt-1 = Edge Vælg Trigger
EXTPOLAR | = 0x02; / / Vælg eksterne Interrupt-1 = Rising Edge Trigger
PINSEL0 | = 0x20000000; / / Set GPIO0.14 = EXTINT1 Interrupt
Uddød = 0x00000002; / / Clear Eksterne Interrupt1 flag/ / Initial Interrupt Vector
VICIntSelect = 0x00008000; / / Select Interrupt-15 (Eksterne Interrupt1)
VICIntEnable = 0x00008000; / / Aktiver Interrupt-15 (Eksterne Interrupt1)printf ( "CP-JRARM7 USB-LPC2148 ... Eksempel FIQ Interrupt \ n ");// Call printf Funktion
printf ( "Interrupt-1 Rising Edge Trig Ved GPIO0.14 \ n"); / / Call printf Funktion
printf ( "Tryk på Switch-belastning i Trigger Interrupt-1 \ n \ n"); / / Call printf Funktion
printf ( "Hello Fra ...... hovedfunktion \ n"); / / Call printf Funktion/ / Loop Her Vent Interrupt
while (1);
)/******************************/
/ * Initial UART0 = 9600, N, 8,1 * /
/ * VPb (pclk) = 60,00 MHz * /
/******************************/
void init_serial0 (void)
(
PINSEL0 & = 0xFFFFFFF0; / / Nulstil P0.0, P0.1 Pin Config
PINSEL0 | = 0x00000001; / / Select P0.0 = TxD (UART0)
PINSEL0 | = 0x00000004; / / Select P0.1 = RxD (UART0)U0LCR & = 0xFC; / / Nulstil Word Vælg (1:0)
U0LCR | = 0x03; / / Data Bit = 8 bit
U0LCR & = 0xFB; / / Stop Bit = 1 Bit
U0LCR & = 0xF7; / / Parity = Deaktiver
U0LCR & = 0xBF; / / Disable Break Control
U0LCR | = 0x80; / / Aktiver Programmering af Divisor Latches/ / U0DLM: U0DLL = 60,00 MHz / [16 x Baud]
/ / = 60,00 MHz / [16 x 9600]
/ / = 390,6 = 391 = 0187H
U0DLM = 0x01; / / Program Divisor Latch (391) til 9600 Baud
U0DLL = 0x87;U0LCR & = 0x7F; / / Disable Programmering af Divisor LatchesU0FCR | = 0x01; / / FIF0 Aktiver
U0FCR | = 0x02; / / RX FIFO Nulstil
U0FCR | = 0x04; / / TX FIFO Nulstil
U0FCR & = 0x3F;
)/****************************/
/ * Skriv Tegn Til UART0 * /
/****************************/
int putchar (int ch)
(
if (ch == '\ n')
(
while (! (U0LSR & 0x20)); / / Vent TXD Buffer Empty
U0THR = 0x0D; / / Skriv CR
)
while (! (U0LSR & 0x20)); / / Vent TXD Buffer Empty
return (U0THR = ch); / / Skriv Character
)/*****************************/
/ * Læs Character Fra UART0 * /
/*****************************/
int getchar (void)
(
while (! (U0LSR & 0x01)); / / Vent RXD Modtag data Ready
return (U0RBR); / / Get Receice Data & Retur
)
/********************************/
/ * Eksterne Interrupt-1 Service * /
/********************************/
void FIQ_Handler (void) __fiq
(
printf ( "Hello Fra ...... Eksterne Interrupt-1 \ n"); / / Call printf Funktion
Uddød = 0x00000002; / / Clear Eksterne Interrupt1 flag
)