aboutsummaryrefslogtreecommitdiffstats
path: root/libmaple/delay.h
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-07-18 14:19:04 -0400
committerMarti Bolivar <mbolivar@leaflabs.com>2011-07-18 14:19:04 -0400
commitcb0f0b690e7b2fb33094df89b8f84141a7b7f377 (patch)
treec5076323fd9972c1552fc5b3d3290dfd2387c7b0 /libmaple/delay.h
parent69d0f4424a5c9d2bba4ec7c8a69968d7ae034f77 (diff)
downloadlibrambutan-cb0f0b690e7b2fb33094df89b8f84141a7b7f377.tar.gz
librambutan-cb0f0b690e7b2fb33094df89b8f84141a7b7f377.zip
Add DELAY_US_MULT, for use in generalizing delay_us().
The delay_us() implementation multiplies its specified delay target by a fixed constant in order to turn it into a busy-loop. This magic number doesn't work properly when the clock configuration isn't the same as a stock LeafLabs board. Add DELAY_US_MULT to the MCU-specific configuration in stm32.h in order to allow other chips to use delay_us().
Diffstat (limited to 'libmaple/delay.h')
-rw-r--r--libmaple/delay.h10
1 files changed, 2 insertions, 8 deletions
diff --git a/libmaple/delay.h b/libmaple/delay.h
index 56611a5..dd68ec6 100644
--- a/libmaple/delay.h
+++ b/libmaple/delay.h
@@ -4,6 +4,7 @@
*/
#include "libmaple_types.h"
+#include "stm32.h"
#ifndef _DELAY_H_
#define _DELAY_H_
@@ -11,17 +12,10 @@
/**
* @brief Delay the given number of microseconds.
*
- * Note that this function currently assumes you are on a LeafLabs
- * board, and will only work properly if you follow the LeafLabs RCC
- * configuration.
- *
* @param us Number of microseconds to delay.
*/
static inline void delay_us(uint32 us) {
- /* TODO this makes unwarranted assumptions about the RCC
- * config; add a hook so users can make their own decisions. */
- /* So (2^32)/12 micros max, or less than 6 minutes */
- us *= 12;
+ us *= DELAY_US_MULT;
/* fudge for function call overhead */
us--;