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

Это же вроде интринсик функции, зачем им хидер?
Один плюсик или два плюсика тоже в хидерах не описан, но все юзают и вполне довольны rolleyes.gif
iit
Сделай ассемблерную вставочку по изменению флага I. Только не пытайся делать это из режима User Mode.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.