Проблема в слеудющем: хочу разрешить преррывания. Для этого надо сбросить I-флаг в CPSR-регистре. В моем IAR'е в документации упоминаются функции __get_CPSR и __set_CPSR, но только в документации, в header'ах их нигде нет. О функциях же __enable_interrupt и __disable_interrupt написано, что они работатют только в режиме супервизора. У меня есть сомнения в том, что этот режим у меня установлен. Соответственно, вопросы:1) Как можно установить и проконтролировать установку режима супервизора? 2) Как иначе можно доступиться до CPSR регистра и разрешить прерывания? 3) Исходя из вышеизложенного, я, кажется, уже дошел до того, чтобы самому написать asm-овские функции getCPSR и setCPSR. Как это сделать, чтобы оно работало?
Посмотрите в СиStartup.Асм, который подключен к проекту. Просто не переходите в юзер_моуд, и все. Тогда cpsr доступен будет, в т.ч. и функциям __enable_interrupt и __disable_interrupt..
Цитата
В моем IAR'е в документации упоминаются функции __get_CPSR и __set_CPSR, но только в документации, в header'ах их нигде нет.
Это же вроде интринсик функции, зачем им хидер?
Один плюсик или два плюсика тоже в хидерах не описан, но все юзают и вполне довольны
Сделай ассемблерную вставочку по изменению флага I. Только не пытайся делать это из режима User Mode.