ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
124863
xns (10.07.2008 18:46, просмотров: 1617)
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); }