ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1245866 Топик полностью
Nikolay801_ (03.10.2022 10:51, просмотров: 282) ответил Dingo на Тоже спрошу. Как оформляются обработчики прерываний? Поймал себя недавно на том, что "и попробовал бы Цэ++, но не знаю, как делается ...". Это одна из базовых вещей.
никак. 

у обработчика прерывания способ вызова сишный, у плюсов другой способ.

при вызове метода класса помимо параметров которые которые у метода объявлены еще не явно передается дополнительный параметр - это указатель на сам объект 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();
}
Будь ты проклят, Перри-Утконос!