6#include <FreeRTOS/Source/include/task.h>
19__STATIC_INLINE
void DWT_Init(
void) {
20 CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
21 DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
26__STATIC_INLINE
void DWT_delay_us(uint32_t us) {
27 uint32_t us_count_tic = us * (SystemCoreClock / 1000000U);
29 while (DWT->CYCCNT < us_count_tic);
35__STATIC_INLINE uint32_t DWT_micros(
void) {
36 return DWT->CYCCNT / (SystemCoreClock / 1000000U);
42__STATIC_INLINE uint32_t DWT_value(
void) {
46static void poly_delay(uint32_t ms) {
47 if (xTaskGetSchedulerState() == taskSCHEDULER_NOT_STARTED) {
50 vTaskDelay(pdMS_TO_TICKS(ms));
56 unsigned long m_startTime;
64 m_startTime(DWT_micros())
75 unsigned long currentTime = DWT_value();
76 float elapsedTimeInSeconds = (currentTime - m_startTime)/ (SystemCoreClock / 1000000U) / float(1e6);
77 if(currentTime<m_startTime) {
78 unsigned long dp=-m_startTime;
80 elapsedTimeInSeconds=(currentTime + dp)/ (SystemCoreClock / 1000000U) / float(1e6);
82 return elapsedTimeInSeconds;
92 unsigned long currentTime = DWT_value();
93 float elapsedTimeInSeconds = (currentTime - m_startTime)/ (SystemCoreClock / 1000000U) / float(1e6);
94 if(currentTime<m_startTime) {
95 unsigned long dp=-m_startTime;
97 elapsedTimeInSeconds=(currentTime + dp)/ (SystemCoreClock / 1000000U) / float(1e6);
99 m_startTime = currentTime;
100 return elapsedTimeInSeconds;
float getElapsedTime()
Récupère le temps depuis le dernier reset.
Definition My_Clock.h:73
float restart()
Reset le temps.
Definition My_Clock.h:90
Clock()
Constructeur de Clock.
Definition My_Clock.h:62