Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

STM32f415 exeption

Непрочитано 03.07.2017, 23:38  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию STM32f415 exeption

Код:

void os_idle_demon (void) {
  /* The idle demon is a system thread, running when no other thread is      */
  /* ready to run.                                                           */

  for (;;) {
    /* HERE: include optional user code to be executed when no thread runs.*/
  }
}


Доброго дня.
Есть такая чудная функция Keil5 HAL ....
В нее залетает поток при возникновении нештатной ситуации...
Как посмотреть где нештатная ситуация произошла... ?

Дело происходит после приема по USART третего четвертого...
Код в другом проекте работал...
Реклама:
bass1981 вне форума  
Непрочитано 04.07.2017, 08:21  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: STM32f415 exeption

Вообще-то, это совершенно штатная ситуация, когда в системе работает только процесс Idle - бездействие. То есть, нет готовых к исполнению процессов, все они находятся в состоянии "приостановлен".
А void os_idle_demon (void) - тут могут размещаться действия, выполняемые в состоянии Idle - например, монитор ресурсов. Именно так вы получаете на обычном компе сообщение "загрузка ЦПУ: 25%", то есть, длительность нахождения в Idle за некоторый отрезок времени.
Либо, именно здесь может быть остановлен МК (wfi) для снижения потребления.

То, что вы в ту функцию попадаете после приема скольки-то байтов, означает, что система ожидает приема следующего байта и у нее нет других активных процессов.
В другом проекте такого не было? Значит, там постоянно что-то выполнялось, как минимум, один процесс был в состоянии готовности к выполнению.

То, что вы называете exeption - исключением, на деле исключением не является.
При возникновении какой-то внештатной ситуации, если она произошла на уровне ядра МК, вы попадете в один из обработчиков исключений ядра. HardFault - один из них. и вы вылетите вообще из "зоны ответственности" ОС.
Если внештатная ситуация произошла на уровне ядра РТОС, вы должны разобраться с ней в функции void os_error (uint32_t error_code). Обычно эти ошибки связаны с переполнением стека, буферов очередей, выделенной памяти для ОС.
При прочих ненормальностях работы вы должны самостоятельно контролировать и разруливать ошибки.

PS/ - мануал с объяснениями: https://www.keil.com/pack/doc/CMSIS/...3726d2860282e4
гуглоперевод:
"Функция os_idle_demon выполняется ядром RTX, когда другие потоки не готовы к запуску. По умолчанию эта задача представляет собой пустой цикл без конца, который ничего не делает. Он только ждет, пока другая задача будет готова к запуску. Вы можете изменить код функции os_idle_demon, чтобы включить CPU в энергосберегающий или режим ожидания."

Последний раз редактировалось NewWriter; 04.07.2017 в 12:10.
NewWriter вне форума  
Сказали "Спасибо" NewWriter
bass1981 (06.07.2017)
Непрочитано 06.07.2017, 13:35  
bass1981
Гражданин KAZUS.RUN
 
Регистрация: 01.09.2007
Сообщений: 897
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: STM32f415 exeption

Понял что за функция.
Чуть чуть не так....
В программе где все работало в конце MAIN стоит цикл while.
В программе где не работает тоже самое.
Оказалось что после приема нескольких байт по USART...
При очередном вызове функция отправки по USB данных вызывает исключение....
И цикл while перестает исполняться... И система выходит как раз в эту функцию...
Буду разбираться почему так...
bass1981 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32f415 глюк с прошивкой. bass1981 Коллекция глюков 0 03.06.2014 00:19
Debugger Stm32f415 bass1981 ARM 7 28.05.2014 16:43
STM32f415 полтергейст bass1981 ARM 8 17.05.2014 20:49
SPI2 на STM32f415 bass1981 ARM 2 16.05.2014 18:17
Тактирование для DFU-режима STM32F415 bass1981 ARM 1 15.10.2013 07:20


Часовой пояс GMT +4, время: 14:55.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.