Итак, я работаю с LPC824, который является кортексом-m0 +. Я пытаюсь сохранить сходство в коде с Arduino и в настоящее время застрял в серийном классе. Прямо сейчас у меня есть серийный класс, который расширяет класс печати, как показано ниже.
Printer.h
class Printer
{
public:
Printer();
unsigned int print(char c);
virtual unsigned int write(char c) = 0;
}
Printer.cpp
#include "Printer.h"Printer::Printer()
{
//Nothing to do yet
}
unsigned int Printer::print(char c)
{
return write(c);
}
serial.h
#include "Printer.h"class Serial : public Printer
{
public:
Serial();
static Serial& Serial0();
unsigned int begin(/*eventually options*/);
unsigned int write(char c);
}
Serial.cpp
#include "Serial.h"#include "uart.h"Serial::Serial()
{
//Nothing to do yet
}
Serial& Serial::Serial0()
{
static Serial inst;
return inst;
}
unsigned int Serial::begin(/*eventually options*/)
{
uart0init(115200, 0x04, 0x00);
}
unsigned int Serial::write(char c)
{
uart0send(c);
}
main.cpp
#include "Serial.h"void main()
{
Serial::Serial0().begin();
while(1)
{
Serial::Serial0().write('a');
Serial::Serial0().print('b');
}
}
Вызов функции записи выведет «а». Когда я тогда вызываю функцию печати, моя программа зависает. Почему я не могу вызвать функцию печати на моем синглтоне, но я могу вызвать функцию записи?
Задача ещё не решена.
Других решений пока нет …