Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программное прерывание на STM32
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Atlantis-
Здравствуйте!
У меня возникла необходимость генерировать программное прерывание, то есть устанавливать некий бит и улетать в обработчик прерываний с приоритетом выше USB и ниже I2S. Не уверен, то ли я нашел, но в STM32F429 есть регистр EXTI_SWIER, устанавливая бит которого в мануале обещают программное прерывание. Пытаюсь его настроить так:
Код
    EXTI->IMR |= EXTI_IMR_MR0;
    NVIC_SetPriority(EXTI0_IRQn, 15);
    NVIC_EnableIRQ(EXTI0_IRQn);
    
    EXTI->SWIER |= EXTI_IMR_MR0;

обработчик прерываний такой:
Код
void EXTI0_IRQHandler (void)
{
    SET(TEST_X);
}


Вроде как, после установки EXTI->SWIER |= EXTI_IMR_MR0 программа должна улететь в обработчик прерывания, но этого не происходит. Подскажите пожалуйста, что я делаю не так?
Atlantis-
В мануале нашел только эту фразу
Цитата
Software interrupt/event selection
The 23 lines can be configured as software interrupt/event lines. The following is the
procedure to generate a software interrupt.
• Configure the mask bits of the 23 interrupt/event lines (EXTI_IMR, EXTI_EMR)
• Set the required bit in the software interrupt register (EXTI_SWIER)

jcxz
Цитата(Atlantis- @ Sep 30 2016, 18:43) *
В мануале нашел только эту фразу

Откройте доку на ядро и читайте всё про NVIC.
jak
после выполнения строки
EXTI->SWIER |= EXTI_SWIER_SWIER0; // вызов прерывания Software Interrupt on line 0
будет в соотв. программном прерывании
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.