Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Systick STM32 не вызывается прерывание
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Vladimir Prokofiev
STM32F215, FreeRtos
На одной из плат перестает вызываться прерывание SysTick. При этом на большинстве плат все ок.
Если смотреть регистры, то SysTickSR:
Enable = 1
TickInt = 1
CLKSOURCE = 1
COUNTFLAG = 1
программа идет по самой приоритетной задаче постоянно, прерывание не вызывается, хотя регистр счетчика постоянно меняется и перескакивает через ноль.
Перестают прерывания сыпаться каждый раз на разном значении обработанных прерывания ( тиков операц. системы ) сейчас например отладчик показывает xTickCount = 4050, перед этим было 413.
smk
А какой таймер использует ОС чтобы переключать задачи? Часом SysTick не зарезервирован как системный ресурс?
vlad_new
Может где то глобальное прерывание запрещается. Есть реакция на другие прерывания ?
dac
QUOTE (Vladimir Prokofiev @ Oct 23 2013, 22:03) *
STM32F215, FreeRtos

а ОС часом не отключает где-нибудь глобальные прерывания?
сталкивался на TNKernel
etoja
Пропаяйте выводи земли и питания.
Vladimir Prokofiev
Так и не решилась проблемаsm.gif
Да, Systick переключает задачи. Не вызывется => Задачи не переключаются, что и видно.. Сейчас попробую поймать и посмотреть на другие прерывания..
Thorn
Проверьте значения в регистрах PRIMASK, FAULTMASK, BASEPRI.
Vladimir Prokofiev
Цитата(Thorn @ Feb 10 2014, 18:03) *
Проверьте значения в регистрах PRIMASK, FAULTMASK, BASEPRI.


PRIMASK=0
FAULTMASK=0
BASEPRI=0xB0

Прерывания другие вызываются, с одного ком-порта на другой данные как шли так и идут.

Ну да вот и ответ sm.gif Спасибо всем. Вобщем, при сбое по i2c, я забыл разрешить прерывания. А весь блок от выставления старта до стопа убран был в критическую секцию. Если происходил сбой то я выходил из функции забыв покнуть критическую секцию
ViKo
Есть понятие "инверсия приоритетов". Возможно, у вас оно случилось.
А до SysTick есть еще с 8 разных прерываний, которые могут перекрыть SysTick.
_Артём_
Цитата(ViKo @ Mar 26 2014, 12:45) *
Есть понятие "инверсия приоритетов".

Понятие из другой оперы вроде...
Цитата(ViKo @ Mar 26 2014, 12:45) *
А до SysTick есть еще с 8 разных прерываний, которые могут перекрыть SysTick.

Почему только 8? Периферийные прерывания тоже могут перекрыть SysTick_Handler.
ViKo
Цитата(_Артём_ @ Mar 26 2014, 12:10) *
Понятие из другой оперы вроде...

Из области RTOS. Думаю, проблема в ней.
Цитата
Почему только 8? Периферийные прерывания тоже могут перекрыть SysTick_Handler.

Если приоритеты прерываний изменить, то можно. А если не трогать, то как я написал. rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.