Serial viestintä käyttäen LPC2214

A

Aashu

Guest
: DHello ystäviä,

Olen käyttäen LPC2214.Olen noviisi tämän valvojalle.Olen kirjoittanut koodin sarjaliikenne, joka välittää onnistuneesti (kuten minä tarkastetaan Hyper terminal), mutta ei voi saada.Koodi on liitetty alle.Käytän Rowley's Crossworks ARM kokeiluversion ladata verkosta kuin IDE.Ole hyvä huomauttaa virheestä koodin.Myös Etsin noin Vertailumateriaali koodit kehitetty tämän IDE, joten jos jokin on, lähetä työskentelevät näytteen Tunnusluvut sarjaliikenne, ajastin katkaisee jne.
Lisäksi minulla on muutama kysely mentiioned kuin mukaisesti, vastaa:

1) Mikä on oikea virtaus kirjoittaa rutiinia serial comm. (Siirto ja vastaanotto)?

2) Mitkä ovat rekisteröityy aloitetaan ja mitä arvoa, jos käytän UART0

3) Miten voin tehdä sarja keskeytä toiminto suoritetaan, kun saan jotain sarja UART0.

4) Crossworks mikä on tapa määritellä keskeyttää toiminnon.Ja miten
kääntäjä tulee tietää, että se on sarja ISR toiminto.Thanks & Regards,
Aashukoodi on seuraava:
/*_________________________________________________________________*/# include <targets/LPC22xx.h>
# include <stdio.h>

# define UART0_INT 6
# define TEMT (1 <<6)
# define READ_P3_0_7 (IO3PIN & 0xff) / / lue alempi tavun P3
# define WRITE_P3_0_7 (b) ((IO3PIN = | 0xFF) & = b) / / kirjoittaa alempi tavu P3void viive (int);
void ser_initialise ();
void serial_tx_byte (unsigned char l_uch_data_port);
unsigned char UARTReadChar ();unsigned char rxchar;
static void uartISR (void) __attribute__ ((keskeytys (IRQ ")));

static void uartISR (void)
(
/ * Lue IIR selkeitä keskeyttää ja selvittää syy * /
unsigned IIR = U0IIR;
serial_tx_byte ( '');

/ * Käsittele UART keskeyttää * /
switch ((IIR>> 1) & 0x7)
(
Tapaus 1:
/ * Thre keskeyttää * /
break;
Tapaus 2:
/ * RDA keskeyttää * /
rxchar = UARTReadChar ();

serial_tx_byte (rxchar), / / ei toimi

break;
Tapaus 3:
/ * RLS keskeyttää * /
break;
case 6:
/ * CTI keskeyttää * /
break;
)
/ * Päivitä VIC painopisteitä * /
VICVectAddr = 0;
)unsigned char UARTReadChar ()
(
while ((U0LSR & 0x01) == 0);
return U0RBR;
)void serial_tx_byte (unsigned char l_uch_data_port)
(
U0THR = l_uch_data_port;
while (! (U0LSR & TEMT));
)

void ser_initialise ()
(
PINSEL0 = 0x5; / / Initialise Pin valitse Estä ja Tx-ja Rx
U0FCR = 0x7; / / Ota FIFO: n ja palauttaa ne
U0LCR = 0x83; / / Set DLAB ja sanan pituus asetettu 8 bittiä
U0DLL = 0x28; / / Siirtonopeus asetettu 9600
U0DLM = 0x0;
U0LCR = 0x3; / / Vapaa DLAB
U0FCR = 1;

/ * Setup UART RX keskeyttää * /
VICIntSelect & = ~ (1 <<UART0_INT) / * IRQ keskeyttää * /
VICVectCntl0 = (1 <<5) | UART0_INT; / * Käytä korttipaikka 0-painike keskeyttää * /
VICVectAddr0 = (unsigned int) uartISR; / * Setup-painiketta FIN * /
VICIntEnable | = 1 <<UART0_INT;
U0IER = 1;
__ARMLIB_enableIRQ () / * Ota maailmanlaajuinen keskeyttää * /
)/ / Delay
void viive (int d)
(
ja (d - d)
;
)

/ / Start tärkeimpien
int main (void)
(
int i;

__ARMLIB_enableIRQ () / * Ota maailmanlaajuinen keskeyttää * /

PINSEL0 = 0x00000005;
IO0DIR = 0X000000F0;
/ / PINSEL2 = 0x00000000;
ser_initialise ();

IO0SET = 0x00000020; / / Voit vaihtaa LED
viive (200000);
IO0CLR = 0x00000020;
viive (200000);while (1)
(
IO0SET = 0x00000020;
serial_tx_byte ( 'M');
viive (100000);

jos (rxchar! = NULL)
(
IO0CLR = 0x00000020, / / jos merkki sai
/ / Laittaa pois LED
break;
)

)) / / End of "main ()"
/*_________________________________________________________________*/[/ b]

 

Welcome to EDABoard.com

Sponsor

Back
Top