Jump to content

    
Sign in to follow this  
vprokofiev

Systick STM32 не вызывается прерывание

Recommended Posts

STM32F215, FreeRtos

На одной из плат перестает вызываться прерывание SysTick. При этом на большинстве плат все ок.

Если смотреть регистры, то SysTickSR:

Enable = 1

TickInt = 1

CLKSOURCE = 1

COUNTFLAG = 1

программа идет по самой приоритетной задаче постоянно, прерывание не вызывается, хотя регистр счетчика постоянно меняется и перескакивает через ноль.

Перестают прерывания сыпаться каждый раз на разном значении обработанных прерывания ( тиков операц. системы ) сейчас например отладчик показывает xTickCount = 4050, перед этим было 413.

Edited by Vladimir Prokofiev

Share this post


Link to post
Share on other sites

Так и не решилась проблема:)

Да, Systick переключает задачи. Не вызывется => Задачи не переключаются, что и видно.. Сейчас попробую поймать и посмотреть на другие прерывания..

Share this post


Link to post
Share on other sites
Проверьте значения в регистрах PRIMASK, FAULTMASK, BASEPRI.

 

PRIMASK=0

FAULTMASK=0

BASEPRI=0xB0

 

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

 

Ну да вот и ответ :) Спасибо всем. Вобщем, при сбое по i2c, я забыл разрешить прерывания. А весь блок от выставления старта до стопа убран был в критическую секцию. Если происходил сбой то я выходил из функции забыв покнуть критическую секцию

Edited by Vladimir Prokofiev

Share this post


Link to post
Share on other sites

Есть понятие "инверсия приоритетов". Возможно, у вас оно случилось.

А до SysTick есть еще с 8 разных прерываний, которые могут перекрыть SysTick.

Share this post


Link to post
Share on other sites
Есть понятие "инверсия приоритетов".

Понятие из другой оперы вроде...

А до SysTick есть еще с 8 разных прерываний, которые могут перекрыть SysTick.

Почему только 8? Периферийные прерывания тоже могут перекрыть SysTick_Handler.

Share this post


Link to post
Share on other sites
Понятие из другой оперы вроде...

Из области RTOS. Думаю, проблема в ней.

Почему только 8? Периферийные прерывания тоже могут перекрыть SysTick_Handler.

Если приоритеты прерываний изменить, то можно. А если не трогать, то как я написал. :rolleyes:

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this