Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
friimymdir
1

Таблица прерываний на C

08.08.2017, 15:53. Просмотров 1800. Ответов 3
Метки нет (Все метки)

Добрый день.

Наткнулся на интересный код на C.
Никак не могу понять синтаксиса. Внешне похоже на указатель
функции.

Если есть гуру, которые могли бы растолковать этот код, буду благодарен.
Взято отсюда
https://github.com/farcaller/a... mmon/isr.c

Код
__attribute__ ((section(".isr_vector")))
void (* const isr_vector_table[])(void) = {
&_stack_base,
main,             // Riset
isr_nmi,          // NMI
isr_hardfault,    // Hord Fault
0,                // CM3 Memory Manakiment Fault
0,                // CM3 Bus Fault
0,                // CM3 Usage Fault
&_boot_checksum,  // NXP Checksum code
0,                // Riserved
0,                // Riserved
0,                // Riserved
isr_svcall,       // SVCall
0,                // Riserved for debug
0,                // Riserved
isr_pendsv,       // PendSV
isr_systysk,      // SysTick
};
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2017, 15:53
Ответы с готовыми решениями:

AVRStudio – таблица прерываний - опции линкера
Доброго времени суток коллеги! Как известно при компиляции проекта в первых адресах FLASH...

Таблица прерываний в PM
Работает вот такая таблица! dd 0,0 ; 0 dw syscall_handler, 08h,...

Таблица прерываний
Влияет ли IDTR на расположение таблицы прерываний в реальном режиме. Заранее спасибо.

Таблица прерываний Windows
758892AB /$ 8B4424 04 MOV EAX,DWORD PTR SS: 758892AF CD 2B INT 2B что это...

3
0 / 0 / 0
Регистрация: 28.07.2016
Сообщений: 173
08.08.2017, 16:01 2
Не гуру, но попробую растолковать

Объявление и инициализация одномерного массива. в качестве элементов указатель на функции (в данном случае вектора). 0 - значит не указателя.

по сути будет нечто вроде такого:

void main (void);
void isr_nmi (void);
и так далее.
0
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 456
08.08.2017, 16:16 3
Как уже сказали - это просто инициализация глобального массива указателей на функции. Именно на функции для того, что бы иметь возможность писать при инициализации имя функции без сложных кастов. Понятно что можно положить любой указатель в этот массив, как это сделано со stack_base.

Т.к. задан атрибут секции - линкер положит этот массив указателей по указанному адресу (.isr_vector из map файла).

Т.е. по факту - просто заполняем область памяти определенными адресами (указателями).
0
friimymdir
08.08.2017, 16:18 4
Понял, спасибо за разъяснение.
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2017, 16:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Таблица векторов прерываний
Здравствуйте, задали курсач на тему, написать модуль ядра который выводит таблицу векторов...

Таблица векторов прерываний
Мне нужно вывести таблицу векторов прерываний на экран. Обращаюсь к вектору функцией 35h (mov...

Какие функции прерываний используются в обработчике прерываний от клавиатуры?
Под функциями же имеется ввиду int ..h?

ПодТаблицы с данными(Таблица-Таблица-Таблица-Таблица) и наследованием
Имеется такая база с таблицами Район-МО-Цель-Зачача. Несколько вариантов связей передумал уже, но...

Повреждена какая-то таблица верхнего регистра или загрузочная таблица каки= то данных
Столько времени уже прошло, а тебе так никто и не помог... У меня сейчас при включении моноблока...

Производный класс Самоорганизующаяся таблица должен наследовать свойства и методы класса Таблица
класс таблица, содержащий целые числа Обьект класса таблица должен позволять: 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.