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

 
 
> Прерывания в STM32, вопрос
kan35
сообщение Dec 27 2010, 08:26
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Как известно для групирования прерываний в STM32 заведено 5 вариантов группирования (pre-emption и subpriority). В SCB->AIRCR это выражается значениями поля PRIGROUP от 3 до 7, а при старте проца в этом регистре как бы невалидное значение 0. Это значит что прерывания не разделены и то же самое что все прерывания pre-emption (в терминах STM32 - NVIC_PriorityGroup_4)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Dec 27 2010, 09:08
Сообщение #2


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

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



Из отсутствующих (младших) битов приоритета читаются нули. Поэтому при дефолтном нуле в SCB->AIRCR имеем 4 бита (16 уровней) preemption и ноль уровней subpriority.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
kan35
сообщение Dec 27 2010, 09:32
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(AHTOXA @ Dec 27 2010, 15:08) *
Из отсутствующих (младших) битов приоритета читаются нули. Поэтому при дефолтном нуле в SCB->AIRCR имеем 4 бита (16 уровней) preemption и ноль уровней subpriority.

Код
#define NVIC_PriorityGroup_0         ((uint32_t)0x700) /*!< 0 bits for pre-emption priority
                                                            4 bits for subpriority */
#define NVIC_PriorityGroup_1         ((uint32_t)0x600) /*!< 1 bits for pre-emption priority
                                                            3 bits for subpriority */
#define NVIC_PriorityGroup_2         ((uint32_t)0x500) /*!< 2 bits for pre-emption priority
                                                            2 bits for subpriority */
#define NVIC_PriorityGroup_3         ((uint32_t)0x400) /*!< 3 bits for pre-emption priority
                                                            1 bits for subpriority */
#define NVIC_PriorityGroup_4         ((uint32_t)0x300) /*!< 4 bits for pre-emption priority
                                                            0 bits for subpriority */

Я имею в виду, что все варианты - это не НУЛИ. А при старте в SCB->AIRCR - НОЛЬ. наеврное я торможу, не понимаю.
Ну когда я назначаю например NVIC_PriorityGroup_4, то в общем то так же все и работает, просто не понятно почему так, а не начиная с НУЛЯ сделали?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 27 2010, 11:10
Сообщение #4


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

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



Ноль работает точно так же, как и NVIC_PriorityGroup_4.
Эти вещи общие для всего семейства Cortex-M3. То есть, дальше идут NVIC_PriorityGroup_5, NVIC_PriorityGroup_6 и NVIC_PriorityGroup_7.
Ноль - это NVIC_PriorityGroup_7. Но, поскольку STM32 значащие биты приоритета заканчиваются на NVIC_PriorityGroup_4, то все остальные варианты аналогичны NVIC_PriorityGroup_4.


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



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 11:04
Рейтинг@Mail.ru


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