123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /*
- * @brief Common stopwatch support
- *
- * @note
- * Copyright(C) NXP Semiconductors, 2013
- * All rights reserved.
- *
- * @par
- * Software that is described herein is for illustrative purposes only
- * which provides customers with programming information regarding the
- * LPC products. This software is supplied "AS IS" without any warranties of
- * any kind, and NXP Semiconductors and its licensor disclaim any and
- * all warranties, express or implied, including all implied warranties of
- * merchantability, fitness for a particular purpose and non-infringement of
- * intellectual property rights. NXP Semiconductors assumes no responsibility
- * or liability for the use of the software, conveys no license or rights under any
- * patent, copyright, mask work right, or any other intellectual property rights in
- * or to any products. NXP Semiconductors reserves the right to make changes
- * in the software without notification. NXP Semiconductors also makes no
- * representation or warranty that such application will be suitable for the
- * specified use without further testing or modification.
- *
- * @par
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, under NXP Semiconductors' and its
- * licensor's relevant copyrights in the software, without fee, provided that it
- * is used in conjunction with NXP Semiconductors microcontrollers. This
- * copyright, permission, and disclaimer notice must appear in all copies of
- * this code.
- */
- #ifndef __STOPWATCH_H_
- #define __STOPWATCH_H_
- #include "cmsis.h"
- /** @defgroup Stop_Watch CHIP: Stopwatch primitives.
- * @ingroup CHIP_Common
- * @{
- */
- /**
- * @brief Initialize stopwatch
- * @return Nothing
- */
- void StopWatch_Init(void);
- /**
- * @brief Start a stopwatch
- * @return Current cycle count
- */
- uint32_t StopWatch_Start(void);
- /**
- * @brief Returns number of ticks elapsed since stopwatch was started
- * @param startTime : Time returned by StopWatch_Start().
- * @return Number of ticks elapsed since stopwatch was started
- */
- STATIC INLINE uint32_t StopWatch_Elapsed(uint32_t startTime)
- {
- return StopWatch_Start() - startTime;
- }
- /**
- * @brief Returns number of ticks per second of the stopwatch timer
- * @return Number of ticks per second of the stopwatch timer
- */
- uint32_t StopWatch_TicksPerSecond(void);
- /**
- * @brief Converts from stopwatch ticks to mS.
- * @param ticks : Duration in ticks to convert to mS.
- * @return Number of mS in given number of ticks
- */
- uint32_t StopWatch_TicksToMs(uint32_t ticks);
- /**
- * @brief Converts from stopwatch ticks to uS.
- * @param ticks : Duration in ticks to convert to uS.
- * @return Number of uS in given number of ticks
- */
- uint32_t StopWatch_TicksToUs(uint32_t ticks);
- /**
- * @brief Converts from mS to stopwatch ticks.
- * @param mS : Duration in mS to convert to ticks.
- * @return Number of ticks in given number of mS
- */
- uint32_t StopWatch_MsToTicks(uint32_t mS);
- /**
- * @brief Converts from uS to stopwatch ticks.
- * @param uS : Duration in uS to convert to ticks.
- * @return Number of ticks in given number of uS
- */
- uint32_t StopWatch_UsToTicks(uint32_t uS);
- /**
- * @brief Delays the given number of ticks using stopwatch primitives
- * @param ticks : Number of ticks to delay
- * @return Nothing
- */
- STATIC INLINE void StopWatch_DelayTicks(uint32_t ticks)
- {
- uint32_t startTime = StopWatch_Start();
- while (StopWatch_Elapsed(startTime) < ticks) {}
- }
- /**
- * @brief Delays the given number of mS using stopwatch primitives
- * @param mS : Number of mS to delay
- * @return Nothing
- */
- STATIC INLINE void StopWatch_DelayMs(uint32_t mS)
- {
- uint32_t ticks = StopWatch_MsToTicks(mS);
- uint32_t startTime = StopWatch_Start();
- while (StopWatch_Elapsed(startTime) < ticks) {}
- }
- /**
- * @brief Delays the given number of uS using stopwatch primitives
- * @param uS : Number of uS to delay
- * @return Nothing
- */
- STATIC INLINE void StopWatch_DelayUs(uint32_t uS)
- {
- uint32_t ticks = StopWatch_UsToTicks(uS);
- uint32_t startTime = StopWatch_Start();
- while (StopWatch_Elapsed(startTime) < ticks) {}
- }
- /**
- * @}
- */
- #endif /* __STOPWATCH_H_ */
|