13.04.2012, 23:52
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от ALEKSEY188
|
Здравствуйте уважаемые! Интересует вопрос, кто как определят время выполнения участков кода, например функций. Пользуюсь Ira, в симуляторе счетчик циклов есть, через st-link ноль. В принципе пробовал перед интересуемым участком устанавливать порт, в конце сбрасывать и на частотомер, можно таймер запускать. Но это изврат!!! Может, есть проще способ?
|
Есть способ проще:
Код:
|
#define DWT_CYCCNT *(volatile uint32_t *)0xE0001004
#define DWT_CONTROL *(volatile uint32_t *)0xE0001000
#define SCB_DEMCR *(volatile uint32_t *)0xE000EDFC
static inline uint32_t DWT_Get(void)
{
return DWT_CYCCNT;
}
void init_dwt()
{
SCB_DEMCR |= 0x01000000;
DWT_CYCCNT = 0;
DWT_CONTROL|= 1; // enable the counter
}
int main(void)
{
init_dwt();
DWT_CYCCNT=0;// сброс счётчика цилов процессора
DoSome();
uint32_t cycles=DWT_CYCCNT;// чтение количества циклов
} |
|
|
|
Эти 3 пользователя(ей) сказали Спасибо _Артём_ за это сообщение:
|
|
|
14.04.2012, 05:12
|
|
Заблокирован
Регистрация: 14.04.2008
Адрес: Украина, совсем рядом от террористов!
Сообщений: 388
Сказал спасибо: 32
Сказали Спасибо 85 раз(а) в 62 сообщении(ях)
|
Re: Изучаем STM32 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 uint32_t DWT_Get(void)
{
return DWT_CYCCNT;
}
void init_dwt()
{
SCB_DEMCR |= 0x01000000;
DWT_CYCCNT = 0;
DWT_CONTROL|= 1; // enable the counter
}
int main(void)
{
init_dwt();
DWT_CYCCNT=0;// сброс счётчика цилов процессора
DoSome();
uint32_t cycles=DWT_CYCCNT;// чтение количества циклов
}
|
То, что нужно! В железе не проверял, дома нет, но судя по документации подходит. Не понятно чего только в IRA не реализовали.
|
|
|
|
15.04.2012, 14:34
|
|
Прописка
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 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 uint32_t DWT_Get(void)
{
return DWT_CYCCNT;
} |
|
А для чего эта функция?
|
|
|
|
15.04.2012, 14:52
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
для порядка
|
|
|
|
16.04.2012, 00:02
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от pasipaka
|
А для чего эта функция?
|
Чтение счётчика тактов ядра.
Можно использовать как для измерения времени исполнения в программе.
|
|
|
|
16.04.2012, 12:21
|
|
Прописка
Регистрация: 21.03.2011
Сообщений: 107
Сказал спасибо: 15
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от _Артём_
|
Чтение счётчика тактов ядра.
Можно использовать как для измерения времени исполнения в программе.
|
А не проще ли сразу с DWT_CYCCNT читать? И в теле программы прямой доступ юзается... Скорее всего для красоты.
Последний раз редактировалось pasipaka; 16.04.2012 в 12:37.
|
|
|
|
16.04.2012, 15:06
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Hives
|
для порядка
|
можно было через дефайн сделать
|
|
|
|
16.04.2012, 15:23
|
|
Заблокирован
Регистрация: 31.12.2011
Сообщений: 726
Сказал спасибо: 32
Сказали Спасибо 223 раз(а) в 162 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Угу...
А ещё лучше... "плату не включать, код не заливать!"...
(типа... "из автобуса не выходить, ружья с собой не брать!")
|
|
|
|
16.04.2012, 20:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Easyrider83
|
можно было через дефайн сделать
|
А в чём разница для компилятора в данном случае?
Последний раз редактировалось AJScorp; 16.04.2012 в 20:15.
|
|
|
|
16.04.2012, 20:40
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от AJScorp
|
А в чём разница для компилятора в данном случае?
|
Ни в чем. Инлайн функции итак идут "в чистом виде". Это для восприятия разница есть. В данном случае, правда, спорная.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:12.
|
|