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

 
 
> Приорететы прерываний в STM32F4, Совсем запутался. Нужна помощь клуба.
vlad_new
сообщение Aug 27 2013, 11:38
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 218
Регистрация: 24-06-10
Пользователь №: 58 127



Перетаскиваю огромный проект с F3 на F4. Обновил KEIL. Старый проект был написан в кейловском стиле и c его визартами. Теперь приходится все переводить на стандартные библиотеки. И вот с приоритетами я тут здорово засел. У меня используется 8 вытисняющик друг друга приоритетов. Делал все вроде как по описанию, а получается все как то наоборот. Объясните плиз, как все же правильно задавать, к примеру, 15 вытисняющих приоритетов:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);
Это вроде как схема разделения групп и подгруп. Вот так я получу свои 15 приоритетов?

И что тогда здесь указывать?
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = ???;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = ???;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

И еще. В новом кейле, (в режиме отладки) окно Nested Vectored Interrupt Controller (NVIC) в поле Pryority показывает номера от 0 до 255. Раньше было от 0 до 15. Это меня совсем в тупик завело.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AlexandrY
сообщение Aug 27 2013, 12:19
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(vlad_new @ Aug 27 2013, 14:38) *
И еще. В новом кейле, (в режиме отладки) окно Nested Vectored Interrupt Controller (NVIC) в поле Pryority показывает номера от 0 до 255. Раньше было от 0 до 15. Это меня совсем в тупик завело.


У STM32F4 выделено всего 4-е бита из 8-и возможных на приоритеты. Поэтому 16-и уровней приоритета добиться невозможно.
Можно только 8 уровней (3-и бита на приоритет) и один бит на субприоритет если в регистре ядра SCB->AIRCR будет 0.

А 256 вместо 16 стало потому, что раньше приоритеты показывали как 32-х разрядные слова, а теперь как 8-и разрядные.
Типа обнаружили, что к тем словам можно побайтово обращаться.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Aug 27 2013, 12:47
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(AlexandrY @ Aug 27 2013, 15:19) *
У STM32F4 выделено всего 4-е бита из 8-и возможных на приоритеты. Поэтому 16-и уровней приоритета добиться невозможно.

Пишут что можно:


Цитата
9.1.1 NVIC fe atures
The nested vector interrupt controller NVIC includes the following features:
● 87 maskable interrupt channels (not including the 16 interrupt lines of Cortex™-M4F)
● 16 programmable priority levels (4 bits of interrupt priority are used)


Цитата(AlexandrY @ Aug 27 2013, 15:19) *
Можно только 8 уровней (3-и бита на приоритет) и один бит на субприоритет если в регистре ядра SCB->AIRCR будет 0.
Если четыре бита на приоритет и 0 на субприоритет, то получится - 16.


Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th August 2025 - 09:39
Рейтинг@Mail.ru


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