15.05.2014, 09:50
|
#11
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
Здесь тоже можно докопаться, что функции, возвращающие значения регистров должны быть inline. ))))
|
|
|
|
15.05.2014, 11:46
|
#12
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
В случае с Cortex M0 и inline не поможет.
|
|
|
|
30.10.2014, 13:23
|
#13
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
Сообщение от Hives
|
кста: для подсчета тактов у камня есть спец фича, незачем таймер гробить
|
За работой всё некогда было посмотреть. Только сейчас руки дошли. И что же я вижу...
Действительно такая фича есть. Правда в моём stm32f407 другие наименования регистров. Но меня настораживают некоторые детали:
1. В официальном даташите на данный процессор RM0090 rev 5, есть упоминание что есть такое дело как DWT. Описания данного устройства нет. В отладчике я вижу регистры CTRL и CYCCNT.
2. В файле описания данного процессора от ST также нет упоминаний
Код:
|
* @file stm32f407xx.h
* @author MCD Application Team
* @version V2.0.0
* @date 18-February-2014 |
Отсюда вопрос. Стоит ли с этой штукой связываться? Я же не гирлянду на ёлочку делаю.
Вы вообще откуда данную инфу почерпнули? Это вообще можно использовать, может при этом что-то работает медленнее или некорректно. Может в следующей ревизии кристалла оно в другое место перекочует или вообще уйдёт навсегда.
|
|
|
|
30.10.2014, 13:50
|
#14
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,621
Сказал спасибо: 115
Сказали Спасибо 810 раз(а) в 587 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
Цитата:
|
Нужна функция delay на таймере для stm32f303
|
Не нужна. Даже на 8-битном шлаке она не нужна. А тут вообще мегапроц
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
30.10.2014, 14:19
|
#15
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
Сообщение от SasaVitebsk
|
1. В официальном даташите на данный процессор RM0090 rev 5, есть упоминание что есть такое дело как DWT. Описания данного устройства нет. В отладчике я вижу регистры CTRL и CYCCNT.
|
Описания нет потому что DWT - часть ядра. На Systick, к примеру, в reference manuan тоже ничего нет.
Сообщение от SasaVitebsk
|
Стоит ли с этой штукой связываться? Я же не гирлянду на ёлочку делаю.
|
Нормальная штука, стоит связываться.
Сообщение от SasaVitebsk
|
Вы вообще откуда данную инфу почерпнули? Это вообще можно использовать, может при этом что-то работает медленнее или некорректно. Может в следующей ревизии кристалла оно в другое место перекочует или вообще уйдёт навсегда.
|
Можно посмотреть в "ARM Cortex-M4 Processor Technical Reference Manual" в разделе "9.3. DWT Programmers Model"
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
30.10.2014, 17:59
|
#16
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
Сообщение от _Артём_
|
Описания нет потому что DWT - часть ядра. На Systick, к примеру, в reference manuan тоже ничего нет.Можно посмотреть в "ARM Cortex-M4 Processor Technical Reference Manual" в разделе "9.3. DWT Programmers Model"
|
А как отнестись к тому, что в inc файле ничего нет?. Причём это CMSIS и написан он ST в сотрудничестве с самим ARM.
"Часть ядра" надо понимать в нашем случае, что адрес размещения регистров будет одинаковый для STM и для NXP, к примеру?
...
Собственно, ладно, меня практический вопрос интересует. Какой inc я должен подключить, чтобы увидеть DWT? Кто работал, отзовитесь.
PS: Просмотрел "ARM Cortex-M4 Processor Technical Reference Manual" - действительно похоже общие адреса для всех процов будут. Адреса то я и вручную пропишу. Ладно. попробую.
Последний раз редактировалось SasaVitebsk; 30.10.2014 в 18:03.
|
|
|
|
30.10.2014, 18:32
|
#17
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
Сообщение от SasaVitebsk
|
А как отнестись к тому, что в inc файле ничего нет?. Причём это CMSIS и написан он ST в сотрудничестве с самим ARM.
|
Разве нет? Написан он ARM-ом, а не ST.
Вроде оно:
Код:
|
typedef struct
{
__IO uint32_t CTRL; /*!‹ Offset: 0x000 (R/W) Control Register */
__IO uint32_t CYCCNT; /*!‹ Offset: 0x004 (R/W) Cycle Count Register */
__IO uint32_t CPICNT; /*!‹ Offset: 0x008 (R/W) CPI Count Register */
__IO uint32_t EXCCNT; /*!‹ Offset: 0x00C (R/W) Exception Overhead Count Register */
__IO uint32_t SLEEPCNT; /*!‹ Offset: 0x010 (R/W) Sleep Count Register */
__IO uint32_t LSUCNT; /*!‹ Offset: 0x014 (R/W) LSU Count Register */
__IO uint32_t FOLDCNT; /*!‹ Offset: 0x018 (R/W) Folded-instruction Count Register */
__I uint32_t PCSR; /*!‹ Offset: 0x01C (R/ ) Program Counter Sample Register */
__IO uint32_t COMP0; /*!‹ Offset: 0x020 (R/W) Comparator Register 0 */
__IO uint32_t MASK0; /*!‹ Offset: 0x024 (R/W) Mask Register 0 */
__IO uint32_t FUNCTION0; /*!‹ Offset: 0x028 (R/W) Function Register 0 */
uint32_t RESERVED0[1];
__IO uint32_t COMP1; /*!‹ Offset: 0x030 (R/W) Comparator Register 1 */
__IO uint32_t MASK1; /*!‹ Offset: 0x034 (R/W) Mask Register 1 */
__IO uint32_t FUNCTION1; /*!‹ Offset: 0x038 (R/W) Function Register 1 */
uint32_t RESERVED1[1];
__IO uint32_t COMP2; /*!‹ Offset: 0x040 (R/W) Comparator Register 2 */
__IO uint32_t MASK2; /*!‹ Offset: 0x044 (R/W) Mask Register 2 */
__IO uint32_t FUNCTION2; /*!‹ Offset: 0x048 (R/W) Function Register 2 */
uint32_t RESERVED2[1];
__IO uint32_t COMP3; /*!‹ Offset: 0x050 (R/W) Comparator Register 3 */
__IO uint32_t MASK3; /*!‹ Offset: 0x054 (R/W) Mask Register 3 */
__IO uint32_t FUNCTION3; /*!‹ Offset: 0x058 (R/W) Function Register 3 */
} DWT_Type; |
Код:
|
#define DWT_BASE (0xE0001000UL) /*!‹ DWT Base Address */ |
Код:
|
#define DWT ((DWT_Type *) DWT_BASE ) /*!‹ DWT configuration struct */ |
Сообщение от SasaVitebsk
|
"Часть ядра" надо понимать в нашем случае, что адрес размещения регистров будет одинаковый для STM и для NXP, к примеру?
|
Будет одинаковый, если производитель имплментирует этот блок. Хотя вроде его выкинуть нельзя, но мало ли...
Сообщение от SasaVitebsk
|
Собственно, ладно, меня практический вопрос интересует. Какой inc я должен подключить, чтобы увидеть DWT?
|
inc в смысле хидер? core_cm3.h
Код:
|
#define DWT_CYCCNT *(volatile uint32_t *)0xE0001004
#define DWT_CONTROL *(volatile uint32_t *)0xE0001000
#define SCB_DEMCR *(volatile uint32_t *)0xE000EDFC
INLINE void DWT_Init()
{
SCB_DEMCR |= 0x01000000;
DWT_CYCCNT = 0;
DWT_CONTROL|= 1; // enable the counter
}
INLINE uint32_t GetDWT()
{
return DWT_CYCCNT;
}
INLINE void ClrDWT()
{
DWT_CYCCNT=0;
} |
|
|
|
|
30.10.2014, 19:57
|
#18
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
SasaVitebsk, что за лажа? Забываем что было год назад? Тема активно мусировалась на элхе. С новыми CMSIS не нужно никаких плясок с дефайнами, там всё просто.
Код:
|
void Init_DWT(void)
{
CoreDebug-›DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
DWT-›CYCCNT = 0;
DWT-›CTRL |= DWT_CTRL_CYCCNTENA_Msk;
} |
|
|
|
|
31.10.2014, 11:04
|
#19
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
У меня core_cm3 (точнее core-cm4) даже не подключается в проекте ...
Подключаются: stm32f4xx.h, stm32f407xx.h, system_stm32f4xx.h
STM32F0 смысл "CoreDebug-›DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;" подскажите пожалуйста.
Последний раз редактировалось SasaVitebsk; 31.10.2014 в 11:18.
|
|
|
|
31.10.2014, 11:26
|
#20
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Нужна функция delay на таймере для stm32f303
CoreDebug-›DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
тоже самое что и
SCB_DEMCR |= 0x01000000;
Всё это относится к дебагу, к трассированию в частности. Темку на элхе почитай, там всё разжёвано.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:50.
|
|