LPC213x. UART и прерывание. Устал уже рыться в документации и примерах. Подскажите, где ошибка. Код ниже. LPC213x. Использую UART1 и UART0. Оба на приём и отправку в режиме непрерывного опроса работают нормально.
Прерывания по таймерам срабатывают и нормально работают.
UART0 u0;
UART1 u1;
// инициализация прерываний
void InitIRQ(void)
{
VICIntEnable = 0;
VICIntEnClr = 0xFFFFFFFF;
VICVectAddr4 = (unsigned)T0isr;
VICVectCntl4 = 0x24;
VICIntEnable |= 0x10;
VICVectAddr1 = (unsigned)T1isr;
VICVectCntl1 = 0x25;
VICIntEnable |= 0x20;
VICVectAddr6 = (unsigned)UART1Interrupt;
VICVectCntl6 = 0x26;
VICIntEnable |= 0x80;
U1IER |= 0x10; //U1IER |= 0x01;
}
//прерывание по UART
void UART1Interrupt() __irq
{
VICVectAddr = 0x00000000;
u8 ch;
u1.GetChar(&ch);
#ifdef _debug
u0.PutChar(ch);
#endif
}
//получение символа
u8 UART1::GetChar(u8 *uch)
{
*uch = 255;
if(U1LSR & 0x01)
{
*uch = U1RBR;
if((bufferSize < MAX_UART_BUFFER_SIZE) && (fBufferOn))
buffer[bufferSize++] = *uch;
return (0);
}
return (255);
}
-
- Магические цифры не стоит употреблять AD(28 знак., 10.07.2008 19:20)