Преобразование Keil5 C Project в C ++ Project Error с помощью функции прерывания

Используйте backgroundTint вместо background

0
задан Clifford 16 January 2019 в 14:36
поделиться

1 ответ

Обработчикам прерываний требуется компоновка C, если используется компиляция C ++:

extern "C" void USART1_IRQHandler(void)      
{
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)   
    {                                                                        
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);
    }
}

Без компоновки C функция USART1_IRQHandler не заменит обработчик по умолчанию с тем же именем, но с компоновкой C, которая является бесконечной. цикл, следовательно, он «застрял в функции прерывания », что является ... просто другой функцией прерывания.

Связывание C предотвращает «искажение имени» в C ++, которое иначе приводит к тому, что символ не совпадает с именем символа слабой ссылки обработчика прерываний.

0
ответ дан Clifford 16 January 2019 в 14:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: