Отговори на тема  [ 2 мнения ] 
Въпрос за STM32, прекъсване и приоритет 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Май 27, 2006 12:37 pm
Мнения: 647
Местоположение: с. Згалево
Мнение Въпрос за STM32, прекъсване и приоритет
Процесор STM32F103...
Въпроса ми е следния:
Някъде сякаш бях чел, че мога да сменя приоритета на прекъсването по време на изпълнение на програмата. Сега обаче не мога да го открия къде е било.
Неяснотата ми е около следното:
Дали наистина мога да сменям приоритета по време на изпълнение, дали мога да го променя и в самото прекъсване, и ако мога, кога реално настава промяната.

Пример:
Имам 2 прекъсвания с еднакъв приоритет.
Ако влезна в първото, и второто възникне по време на изпълнение на първото, по принцип, второто трябва да чака да свърша първото и чак тогава да се изпълни.
Идеята е дали мога да сменя приоритета на първото още докато съм в него, така че второто да се случи, а аз да си стоя в първото и да изчкам второто да си свърши работата.

Засукано го обясних малко ама, надявам се да сте ме разбрали. :roll:


Чет Апр 18, 2013 12:05 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 6:52 pm
Мнения: 11266
Местоположение: Добрич
Мнение Re: Въпрос за STM32, прекъсване и приоритет
Приоритетите на прекъсванията се задават в IP регстрите на NVIC (което е част от М3 ядрото). В CMSIS има една функцийка за целта:
void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)

Tова е приоритета на заявките от съответното прекъсване. В момента в който влезе в някакво прекъсване, неговия приоритет става текущ за проца...

Сега, принципно приоритета е добре да го бараш преди да си разрешил прекъсването. Ако няма чакаща заявка може и да стане в движение. Не че ти го препоръчвам, но като влезеш в първото може да вдигнеш приоритета на второто, а преди да излезеш да го свалиш. Има шанс да стане, единствено не съм сигурен ако второто вече чака дали ще направи нова арбитрация (би трябвало).

Само не се опитвай да правиш инверсия на приоритетите. В смисъл докато си в една ниво да се опиташ да пуснеш по-ниско ниво. Гарантирано ще те напсува с hard fault.


Чет Апр 18, 2013 9:40 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 2 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни