Я занят прошивкой кастомного моторконтроллера.Для прототипирования я использую ядро L432 с ОС mbed.
Связь с главным контроллером организована по шине CAN.Я получил бы процедуру прерывания, когда есть полученные данныеЭтот код работает очень хорошо, когда помещается в основной файл, но я хотел бы реализовать этот код в отдельном классе.Но когда я пытаюсь скомпилировать это решение, я продолжаю получать следующую ошибку от компилятора: Ошибка: Нестандартная форма для получения адреса функции-члена в "Lib / CANimp.cpp", строка: 19, столбец: 18
У кого-нибудь есть решение для этого?
**CANimp.h**
#define CANIMP_H
#include "mbed.h"
class CANimp {
public:
CANimp(PinName can_rd, PinName can_td);
void send(void);
private:
CAN can1;
void rcv(void);
};
#endif
**CANimp.cpp**
#include "CANimp.h"
#include "mbed.h"
void CANimp::rcv() {
CANMessage msg1;
can1.read(msg1);
if(msg1.data[0] == 1)
{
float speed = msg1.data[1] / 255.0;
printf("set speed to %f \n", speed);
//Motordriver.setPWM(speed);
}
printf("Message received: %d %d\n\n", msg1.data[0], msg1.data[1]);
}
CANimp::CANimp(PinName can_rd, PinName can_td) : can1(can_rd, can_td)
{
can1.frequency(250000);
can1.attach(&rcv, CAN::RxIrq);
}
void CANimp::send() {
pc.printf("send()\n");
char temp[8];
temp[0] = 1;
temp[1] = 255;
temp[2] = 50;
if (can1.write(CANMessage(1338, temp, 3))) {
//pc.printf("wloop()\n");
//pc.printf("Message sent: %d\n", counter);
wait(0.02);
}
}