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

 
 
> Кто вызвал функцию.
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
Ответов
jcxz
сообщение Sep 29 2015, 11:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Jenya7 @ Sep 29 2015, 16:36) *
Вопрос такой - можно узнать кто вызвал эту функцию?

Так как в Delay_us() нет вызовов других функций, то скорей всего stack не нужен, достаточно посмотреть LR. Но точно можно сказать только по дизасму.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Sep 29 2015, 11:29
Сообщение #3


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

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



Цитата(jcxz @ Sep 29 2015, 16:23) *
Так как в Delay_us() нет вызовов других функций, то скорей всего stack не нужен, достаточно посмотреть LR. Но точно можно сказать только по дизасму.

а что такое LR?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:02
Рейтинг@Mail.ru


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