реклама на сайте
подробности

 
 
> Программное прерывание на STM32
Atlantis-
сообщение Sep 30 2016, 08:07
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
У меня возникла необходимость генерировать программное прерывание, то есть устанавливать некий бит и улетать в обработчик прерываний с приоритетом выше 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 программа должна улететь в обработчик прерывания, но этого не происходит. Подскажите пожалуйста, что я делаю не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Atlantis-
сообщение Sep 30 2016, 12:43
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



В мануале нашел только эту фразу
Цитата
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)

Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 30 2016, 19:18
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



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

Откройте доку на ядро и читайте всё про NVIC.
Go to the top of the page
 
+Quote Post
jak
сообщение Mar 30 2017, 10:35
Сообщение #4





Группа: Участник
Сообщений: 5
Регистрация: 29-03-05
Пользователь №: 3 770



после выполнения строки
EXTI->SWIER |= EXTI_SWIER_SWIER0; // вызов прерывания Software Interrupt on line 0
будет в соотв. программном прерывании
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 16:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01374 секунд с 7
ELECTRONIX ©2004-2016