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

 
 
> stm32 вопрос по приоритетам прерываний
Nikitoc
сообщение May 17 2011, 19:42
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Всем доброго времени суток. Я тут зацепился с прерываниями на stm32l152. Пишу на Си в Keil'е, использую либы производителя.
В общем ситуёвина такая: имеем прерывание по USART1 (по приходу символа в приемник) с приоритетом "1" и прерывание от SysTick таймера с приоритетом "3". Приоритеты выставляю вручную. По всем докам на CORTEX-M3 ясно, что прерывание с более высоким приоритетом должно моментально приостанавливать выполнение прерывания с более низким приоритетом (в данном случае USART1 должно прерывать SysTick). На практике же почему-то выходит наоборот - теряется часть посылки по USART1 если SysTick прерывания разрешены (в обработчике SysTick выполняется довольно много работы). Кто-нибудь сталкивался с подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение May 17 2011, 20:17
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Дык! Так и есть, чем меньше циферка, тем больше приоритетsm.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение May 17 2011, 21:19
Сообщение #3


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(AHTOXA @ May 17 2011, 23:17) *
Дык! Так и есть, чем меньше циферка, тем больше приоритетsm.gif

Вы наверное меня неправильно поняли. Поступающий в приемник USART1 (приоритет "1") байт НЕ прерывает выполнение обработчика SysTick (приоритет "3"), либо очень долго прерывает, т.к. за это время затираются другие принятые по USART1 байты...
После того как назначил приоритеты я их проверяю посредством такой ф-ции:
Код
NVIC_GetPriority(SysTick_IRQn);

Ну а выставляю соответственно:
Код
NVIC_SetPriority(SysTick_IRQn, 3);

Может это неправильный способ назначения приоритета системного таймера? Или нужно еще где-то что-то выставить? Просто такое впечатление, что у него остается его приоритет по дефолту "-1".

Сообщение отредактировал Nikitoc - May 17 2011, 21:28
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 18 2011, 03:29
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



А, понятно. Дело в том, что есть ещё такое понятие, как группы приоритетов. По умолчанию все прерывания в одной группе, то есть, друг друга не прерывают. Для того, чтобы прерывали, надо включить несколько групп (NVIC_SetPriorityGrouping()), и развести прерывания по группам.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Nikitoc   stm32 вопрос по приоритетам прерываний   May 17 2011, 19:42
||- - Nikitoc   Цитата(AHTOXA @ May 18 2011, 06:29) Дело ...   May 18 2011, 10:40
||- - ek74   Цитата(Nikitoc @ May 18 2011, 14:40) Т.е....   May 18 2011, 12:14
||- - Nikitoc   Спасибо. Предельно ясно.   May 18 2011, 15:06
|- - ek74   Цитата(Nikitoc @ May 18 2011, 01:19) Ну а...   May 18 2011, 05:34
- - Nikitoc   В продолжение темы о прерываниях. USART2 почему-то...   May 25 2011, 22:34
|- - AHTOXA   USART_IT_RXNE чистится автоматом при вычитывании U...   May 26 2011, 02:22
|- - Nikitoc   Цитата(AHTOXA @ May 26 2011, 05:22) USART...   May 26 2011, 06:56
|- - AHTOXA   Цитата(Nikitoc @ May 26 2011, 12:56) Но п...   May 26 2011, 09:30
|- - Nikitoc   Цитата(AHTOXA @ May 26 2011, 12:30) Убеди...   May 26 2011, 09:35
|- - AHTOXA   Цитата(Nikitoc @ May 26 2011, 15:35) Вооб...   May 26 2011, 10:24
|- - Nikitoc   Цитата(AHTOXA @ May 26 2011, 13:24) Это к...   May 26 2011, 10:39
|- - AHTOXA   Цитата(Nikitoc @ May 26 2011, 16:39) Да, ...   May 26 2011, 12:29
|- - Nikitoc   Цитата(AHTOXA @ May 26 2011, 15:29) Хм. К...   May 26 2011, 14:01
|- - AHTOXA   Цитата(Nikitoc @ May 26 2011, 20:01) Но в...   May 26 2011, 14:35
|- - Nikitoc   Цитата(AHTOXA @ May 26 2011, 17:35) Давай...   May 28 2011, 14:11
- - SergSit   Цитата(AHTOXA @ May 18 2011, 06:29) А, по...   May 26 2011, 08:33
- - mdmitry   Не применительно к данному контроллеру, а по идеол...   May 26 2011, 14:20
- - RusikOk   помогите понять в чем дело. выставляю приоритеты т...   Dec 24 2016, 19:35
|- - AHTOXA   А вы не забыли вызвать NVIC_SetPriorityGrouping() ...   Dec 24 2016, 19:58
- - RusikOk   КодHAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYG...   Dec 24 2016, 20:00
- - esaulenka   Я банальную вещь скажу, но либо это место в библио...   Dec 26 2016, 12:58


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

 


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


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