uC LPC2478을 사용하고 있습니다. 나는 함수 UART0에서 일하고있다. 하지만 UART0 기능을 만들어야합니다. 인터럽트 사용 방법에 대해 잘 모릅니다!UART0을 통한 송수신 인터럽트 작성 방법
긴 문자열을 보내려고하면 긴 문자열을 받아야합니다. 하지만 작동하지 않습니다. 하지만 함수를 작성해야합니까? __irq void isr_UART0 (void) ???
> void initUART0 (void)
> {
> PCONP |= (1 << 3); /* Enable UART0 power */
>
> PINSEL0 &= ~0x000000F0;
> PINSEL0 |= 0x00000050;
>
> U0FDR = 0; /* Fractional divider not used */
> U0LCR = 0x83; /* 8 bits, no Parity, 1 Stop bit */
> U0DLL = 10; /* 115200 Baud Rate @ 12MHz PCLK Clock */
>
> U0DLM = 0;
> U0LCR = 0x03; /* DLAB = 0 */
>
> U0IER = 0;
>
> VICVectAddr6 = (U32)isr_UART0; /* Set Interrupt Vector */
> VICVectCntl6 = 15; /* use it for UART1 Interrupt */
> VICIntEnable = (1 << 6); /* Enable Interrupt */
>
> U0IER = 0x03;
> }
>
> void sendToUART0 (char *data, int len)
> {
> int i;
>
> while (!(U0LSR & (1 << 5)));
> for (i = 0; i < len; i++)
> {
> U0THR = *data;
> data++;
> }
> }
>
> void readDataAtUART0 (char *ch) {
> //while (!(U0LSR & 0x01));
> while (!(U0LSR & (1 << 0)));
> *ch = U0RBR;
> }
>
> /* UART1 receive ISR
> ******************************************************** */
> __irq void isr_UART0 (void) {
> // readDataAtUART0();
>
> // read and assign the received data
VICVectAddr = 0; /* Acknowledge Interrupt */
> }
Hello Martin, 죄송합니다.이 함수의 readDataAtUART0()은 주석입니다 (//). 나는 쓰는 것을 잊었다. 하지만 첫 번째 문제는 U0RBR을 수신하는 동안 한 문자를 얻고 마지막 문자 (문자열)까지 다음 문자를 다시 얻는 코드를 작성하는 방법입니다. 그리고 rx 처리기를 가져 오라고했는데 어떻게해야합니까? – kamran