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

 
 
> Отладка KEIL 4.6 (STM32), Отслеживание времени выполнения программы
Falkon_99
сообщение Nov 13 2012, 19:23
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Недавно начал программировать в среде Keil uVision, очень удобная,все нравится. В режиме отладки внизу пишется время хода программы. Но это время далеко отличается от реального.
Стало интересно, а можно ли смотреть количество тактов процессора, как например в AVR Studio? Думаю эта информация будет более правдивая =)

ps использую плату STM32-VLDiscovery
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение Nov 13 2012, 19:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Falkon_99 @ Nov 13 2012, 21:23) *
Стало интересно, а можно ли смотреть количество тактов процессора, как например в AVR Studio? Думаю эта информация будет более правдивая =)

Если у вас Cortex-m3, то добавьте такой код в свою программу
Код
#define    DWT_CYCCNT    *(volatile uint32_t *)0xE0001004
#define    DWT_CONTROL   *(volatile uint32_t *)0xE0001000
#define    SCB_DEMCR     *(volatile uint32_t *)0xE000EDFC


static inline void DWT_Init()
{
   SCB_DEMCR  |= 0x01000000;
   DWT_CYCCNT  = 0;
   DWT_CONTROL|= 1; // enable the counter
}

int main ()
{
     DWT_Init();
}


Значение счётчика можно посмотреть в окне Expression (должно быть такое)
Код
*(uint32_t *)0xE0001004


В случае, если вариант с Expression почему-либо не подходит значение счётчика можно читать-задавать в нужных мастах программы:

Код
uint32_t FuncWorkTime;

DWT_CYCCNT=0;

Func1();

FuncWorkTime=DWT_CYCCNT;
Go to the top of the page
 
+Quote Post
Falkon_99
сообщение Nov 14 2012, 07:40
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-03-12
Из: Харьков
Пользователь №: 71 010



Цитата(_Артём_ @ Nov 13 2012, 21:41) *
Если у вас Cortex-m3, то добавьте такой код в свою программу
Код
#define    DWT_CYCCNT    *(volatile uint32_t *)0xE0001004
#define    DWT_CONTROL   *(volatile uint32_t *)0xE0001000
#define    SCB_DEMCR     *(volatile uint32_t *)0xE000EDFC

}


Спасибо за ответ, да действительно работаю с Cortex-M3. только не понятно что это за макросы, и куда указывают((
Я так понимаю, что мой Cortex-M3 сам считает пройденные такты???

С предыдущими версиями KEIL не работал. До этого юзал IAR с AVR контроллерами. Keil 4.6 показал себя только с хорошей стороны, недавно разобрался как писать коменты на русском языке, ато без них было не удобно))
Собрал в нём уже несколько проэктов на STM32, постоянно пользуюсь отладкой через SWD интерфейс, пока все замечательно. А какие проблемы были в 4.5?
Go to the top of the page
 
+Quote Post
scifi
сообщение Nov 14 2012, 07:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Falkon_99 @ Nov 14 2012, 11:40) *
Спасибо за ответ, да действительно работаю с Cortex-M3. только не понятно что это за макросы, и куда указывают((

Вот тут написано.
На самом деле при конфигурировании ядра разработчики МК могут убрать эти регистры. Но в STM32 они точно есть.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 07:58
Рейтинг@Mail.ru


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