реклама на сайте
подробности

 
 
> Кто вызвал функцию.
Jenya7
сообщение Sep 29 2015, 10:36
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Работаю с Cortex-M3. Запускаю программу в отладчике (J-Link+AttolicTrueStudio).
Программа улетает куда то. Ставлю паузу, нахожу себя в функции задержки.
Код
void Delay_us(uint32_t us)
{
    uint32_t ticks = 20 * us;
    DWT->CYCCNT = 0;
    DWT->CTRL = 1;
    while (DWT->CYCCNT < ticks);
    DWT->CTRL = 0;
}

Что странно остаюсь в этой функции. Условие while (DWT->CYCCNT < ticks); никогда не выполняется.
Вопрос такой - можно узнать кто вызвал эту функцию?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
megajohn
сообщение Sep 29 2015, 13:35
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Jenya7 @ Sep 29 2015, 13:36) *
Что странно остаюсь в этой функции. Условие while (DWT->CYCCNT < ticks); никогда не выполняется.


не хватает
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;



--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
johnshadow
сообщение Sep 29 2015, 14:07
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 25-09-08
Пользователь №: 40 477



Цитата(megajohn @ Sep 29 2015, 16:35) *
не хватает
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;


+1

Также иногда ST-Link2 что-то конкретно портит в lpc17xx, что DWT таймер не запускается вообще.
Не помогает ни soft-reset, ни hardware-reset. Только отключение питания с проца. J-Link и CoLink в подобном не замечены.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01395 секунд с 7
ELECTRONIX ©2004-2016