|
В прерываниях CM0/CM3 в конце нужен ClearPending? |
|
|
|
 |
Ответов
|
Nov 18 2013, 11:32
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(ViKo @ Nov 18 2013, 15:12)  Тогда почему об этом не заботятся в библиотечной функции? Или не предупреждают? Код /** \brief Clear Pending Interrupt The function clears the pending bit of an external interrupt. \param [in] IRQn External interrupt number. Value cannot be negative. */ __STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn) { NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */ } Наверное, пока произойдет возврат из прерывания (там же восстанавливаются регистры из стека, по-моему, говорится о 12 тактах, или о 6, если в новое прерывание улетает?), конвейер освободится. Предупреждают! "Мамой клянусь" где-то читал. Возврат из прерывания занимает 12 тактов, если только нет других разрешенных необработанных прерываний. Если есть хоть одно, сразу вызывается обработчик без восстановления стека (т.н. Tail-chaining).
|
|
|
|
Сообщений в этой теме
GetSmart В прерываниях CM0/CM3 в конце нужен ClearPending? Nov 15 2013, 07:35 adnega Цитата(GetSmart @ Nov 15 2013, 11:35) Ста... Nov 15 2013, 08:11 GetSmart Цитата(adnega @ Nov 15 2013, 14:11) Вроде... Nov 16 2013, 00:32 Lagman Цитата(adnega @ Nov 15 2013, 12:11) Вроде... Nov 18 2013, 19:06 GetSmart Сравниваю разные исходники из примеров Кейла, Иара... Nov 17 2013, 22:02 ViKo Если прерывание не успело обработаться до прихода ... Nov 18 2013, 08:51 adnega Цитата(ViKo @ Nov 18 2013, 12:51) Если пр... Nov 18 2013, 10:22  GetSmart Цитата(adnega @ Nov 18 2013, 16:22) Но го... Dec 21 2013, 04:42   ViKo Цитата(GetSmart @ Dec 21 2013, 07:42) Не ... Dec 21 2013, 08:13 Flexz Цитата(ViKo @ Nov 18 2013, 15:12) Наверно... Nov 18 2013, 11:29 rudy_b Технических тонкостей конкретного проца не знаю, н... Nov 18 2013, 11:36 sonycman А не проще ли сбрасывать флаг сразу по входу в пре... Nov 18 2013, 18:02 GetSmart Цитата(sonycman @ Nov 19 2013, 00:02) А н... Nov 18 2013, 22:38  sonycman Цитата(GetSmart @ Nov 19 2013, 02:38) Есл... Nov 19 2013, 09:21 SII Команды типа DSB к обработке прерываний никакого о... Dec 21 2013, 06:16 GetSmart Цитата(SII @ Dec 21 2013, 12:16) Способ ф... Dec 21 2013, 07:31  SII Цитата(GetSmart @ Dec 21 2013, 11:31) Не ... Dec 21 2013, 08:20   GetSmart Цитата(SII @ Dec 21 2013, 14:20) время пе... Dec 21 2013, 08:45    adnega Цитата(GetSmart @ Dec 21 2013, 12:45) Чте... Dec 21 2013, 09:17   GetSmart Цитата(adnega @ Dec 21 2013, 15:17) Зачем... Dec 21 2013, 09:23    adnega Цитата(GetSmart @ Dec 21 2013, 13:23) Это... Dec 21 2013, 10:42     GetSmart Цитата(adnega @ Dec 21 2013, 16:42) Если ... Dec 21 2013, 10:52      adnega Цитата(GetSmart @ Dec 21 2013, 14:52) Вре... Dec 21 2013, 11:33   GetSmart Цитата(SII @ Dec 21 2013, 14:20) Все обра... Dec 21 2013, 15:00    SII Цитата(GetSmart @ Dec 21 2013, 19:00) Во-... Dec 21 2013, 15:35     GetSmart Цитата(SII @ Dec 21 2013, 21:35) Какие ещ... Dec 21 2013, 18:40 GetSmart В примерах вполне свежих компиляторов ИАР, Кейл на... Dec 22 2014, 14:59 nill Если Вы про NVIC_ClearPendingIRQ(), то это один из... Dec 23 2014, 18:59 ViKo Я тут копался в своем, перечитал тему. Не увидел с... Feb 10 2015, 11:46 jcxz Цитата(ViKo @ Feb 10 2015, 17:46) Я тут к... Feb 12 2015, 02:56  ViKo Цитата(jcxz @ Feb 12 2015, 05:56) Не так.... Feb 12 2015, 05:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|