Написал класс- абстракцию для UART
Код
class UART:public Peripheral{
//byte buf[8];
protected:
enum {
RBR=0,THR=0,DLL=0,DLM=1,IER=1,IIR=2,FCR=2,LCR=3,
LSR=5,SCR=7,ACR=8,ICR=9,FDR=10,TER=12
};
static UART DEV[UART_SIZE];
public:
//UART(UARTName name,UARTOption *Option = (UARTOption *)NULL);
UART(UARTName name);
~UART();
void Init(UARTOption* Option);
uint GetState() const;
uint GetIntStatus() const;
void ClearInt();
bool Read(byte* buf,const uint& size);
bool Send(byte* buf,const uint& size);
void ClearRxFIFO();
void ClearTxFIFO();
static UART* GetUART(uint num);
};
Инициализирую статическую переменную:
Код
UART UART::DEV[]={UART(UART_0),UART(UART_1),UART(UART_2),UART(UART_3)};
И в этом случае программа валится в програмное прерывание, я так понимаю до main() невозможно вызвать свой код? Или же можно как-то проинициализировать статический экземпляр класса???
Стандартные типы инициализируются на ура, а вот с объектами проблема.
среда KEIL uVision 4.10 гонял на симуляторе