Dima1060 0 30 сентября, 2016 Опубликовано 30 сентября, 2016 · Жалоба Здравствуйте! У меня возникла необходимость генерировать программное прерывание, то есть устанавливать некий бит и улетать в обработчик прерываний с приоритетом выше 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 программа должна улететь в обработчик прерывания, но этого не происходит. Подскажите пожалуйста, что я делаю не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dima1060 0 30 сентября, 2016 Опубликовано 30 сентября, 2016 · Жалоба В мануале нашел только эту фразу 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 172 30 сентября, 2016 Опубликовано 30 сентября, 2016 · Жалоба В мануале нашел только эту фразу Откройте доку на ядро и читайте всё про NVIC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jak 0 30 марта, 2017 Опубликовано 30 марта, 2017 · Жалоба после выполнения строки EXTI->SWIER |= EXTI_SWIER_SWIER0; // вызов прерывания Software Interrupt on line 0 будет в соотв. программном прерывании Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться