никак. у обработчика прерывания способ вызова сишный, у плюсов другой способ.
при вызове метода класса помимо параметров которые которые у метода объявлены еще не явно передается дополнительный параметр - это указатель на сам объект this. В обычных сишных функциях этого нет.
можно предложить такой вариант.
class usart{
public:
usart(USART_TypeDef * port){
this->cport = port;
}
~usart(){};
void handler (void){
if (USART_GetFlagStatus(cport,(USART_FLAG_RXNE)))
{
unsigned char data = USART_ReceiveData(cport);
}
};
private:
USART_TypeDef * cport;
};
usart com1(USART1), com2(USART2);
extern "C" void USART1_IRQHandler(void){
com1.handler();
}
extern "C" void USART2_IRQHandler(void){
com2.handler();
}