Микроконтроллер 1874BE10T, среда CodeMaster++[28], версия 1.00.04, при попытке компиляции получаем на вызове Interrupt_Init(BSI0_IRQn,&BSI0_IRQ_Handler) ошибку:dav писал(а): ↑27 фев 2023, 12:21Микроконтроллер содержит массив регистров (INTERRUPT->INT[]), в котором хранятся адреса обработчиков прерывания. Стоит отметить, что запись в регистры INTERRUPT->INT[] возможна до включения режима EINIT (команда MOD #3).
Для привязки обработчика прерываний можно использовать следующую функцию:
// Настройка прерывания BSI0:Код: Выделить всё
void Interrupt_Init(IRQn_Type IRQn,uint32_t IRQ_Handler) { INTERRUPT->INT[IRQn]=IRQ_Handler; }
Interrupt_Init(BSI0_IRQn,&BSI0_IRQ_Handler);
[C167] argument of type "void (*)()" is incompatible with parameter of type "uint32_t", что говорит о том, что &BSIO_IRQ_Handler не имеет целочисленный вид, при этом функция объявлена:
void BSI0_IRQ_Handler();
........
void BSI0_IRQ_Handler()
{
}
Соответственно, если использовать какое либо число в вызове Interrupt_Init(BSI0_IRQn,&BSI0_IRQ_Handler) вместо &BSI0_IRQ_Handler, то компиляция проходит успешно, при этом никаких привязок, судя по map файлу не происходит. Подскажите пожалуйста, куда копать...