aboutsummaryrefslogtreecommitdiffstats
path: root/wirish
diff options
context:
space:
mode:
authorMarti Bolivar <mbolivar@leaflabs.com>2011-02-27 11:42:56 -0500
committerMarti Bolivar <mbolivar@leaflabs.com>2011-02-27 11:42:56 -0500
commit4e90248a2e81ec7bd8d3cfa858cef4a045cc1003 (patch)
treefa10544230e6e3e29dcdfc94fd5fc880dce009ba /wirish
parenta949fe81d069fb3ee727537ba3d5f9f926129d62 (diff)
downloadlibrambutan-4e90248a2e81ec7bd8d3cfa858cef4a045cc1003.tar.gz
librambutan-4e90248a2e81ec7bd8d3cfa858cef4a045cc1003.zip
Cleaned out libmaple.h; this had wide-ranging implications.
Many of the #defines in libmaple.h were board-specific, not MCU-specific. Most of these were only used by code under libmaple/usb/. These were moved into usb_config.h, and are clearly marked as being terrible hacks. I'm going to treat the USB stack as a black box that we'll deal with later. Further, instead of having a variety of #defines like "How many USARTS do I have?", we decide that based on the density of the chip. This is determined by testing for STM32_MEDIUM_DENSITY or STM32_HIGH_DENSITY defines. libmaple currently doesn't support low-density chips, so that suffices. The Makefile will set these automatically based on the MCU. Other offending #defines are ERROR_LED_PORT and ERROR_LED_PIN; these were made optional, but they're set in the Makefile as a hack to keep things working.
Diffstat (limited to 'wirish')
-rw-r--r--wirish/HardwareTimer.cpp4
-rw-r--r--wirish/HardwareTimer.h2
-rw-r--r--wirish/boards.h18
-rw-r--r--wirish/ext_interrupts.h4
-rw-r--r--wirish/wirish.c4
5 files changed, 20 insertions, 12 deletions
diff --git a/wirish/HardwareTimer.cpp b/wirish/HardwareTimer.cpp
index 354663e..0f8bec6 100644
--- a/wirish/HardwareTimer.cpp
+++ b/wirish/HardwareTimer.cpp
@@ -199,7 +199,7 @@ HardwareTimer Timer1(TIMER1);
HardwareTimer Timer2(TIMER2);
HardwareTimer Timer3(TIMER3);
HardwareTimer Timer4(TIMER4);
-#if NR_TIMERS >= 8
+#ifdef STM32_HIGH_DENSITY
HardwareTimer Timer5(TIMER5); // High-density devices only
HardwareTimer Timer8(TIMER8); // High-density devices only
#endif
@@ -214,7 +214,7 @@ HardwareTimer* getTimer(timer_dev_num timerNum) {
return &Timer3;
case TIMER4:
return &Timer4;
-#if NR_TIMERS >= 8
+#ifdef STM32_HIGH_DENSITY
case TIMER5:
return &Timer5;
case TIMER8:
diff --git a/wirish/HardwareTimer.h b/wirish/HardwareTimer.h
index 4034b1f..4030adc 100644
--- a/wirish/HardwareTimer.h
+++ b/wirish/HardwareTimer.h
@@ -382,7 +382,7 @@ extern HardwareTimer Timer2;
extern HardwareTimer Timer3;
/** Pre-instantiated timer for use by user code. */
extern HardwareTimer Timer4;
-#if NR_TIMERS >= 8
+#ifdef STM32_HIGH_DENSITY
/** Pre-instantiated timer for use by user code, on devices with
more than four timers (this does not include the Maple). */
extern HardwareTimer Timer5;
diff --git a/wirish/boards.h b/wirish/boards.h
index ac3a74d..989eea1 100644
--- a/wirish/boards.h
+++ b/wirish/boards.h
@@ -70,8 +70,12 @@ typedef struct PinMapping {
#define CYCLES_PER_MICROSECOND 72
#define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
- #define BOARD_BUTTON_PIN 38
- #define BOARD_LED_PIN 13
+ #define BOARD_BUTTON_PIN 38
+ #define BOARD_LED_PIN 13
+
+ /* Total number of GPIO pins that are broken out to headers and
+ intended for general use. */
+ #define NR_GPIO_PINS 39
static __attribute__ ((unused)) PinMapping PIN_MAP[NR_GPIO_PINS] = {
/* D0/PA3 */
@@ -173,6 +177,8 @@ typedef struct PinMapping {
#define BOARD_LED_PIN D21
#define BOARD_BUTTON_PIN D18
+ #define NR_GPIO_PINS 100
+
static __attribute__ ((unused)) PinMapping PIN_MAP[NR_GPIO_PINS] = {
/* Top header */
@@ -390,11 +396,13 @@ typedef struct PinMapping {
#elif defined(BOARD_maple_mini)
- #define CYCLES_PER_MICROSECOND 72
+ #define CYCLES_PER_MICROSECOND 72
#define SYSTICK_RELOAD_VAL 71999 /* takes a cycle to reload */
- #define BOARD_BUTTON_PIN 32
- #define BOARD_LED_PIN 33
+ #define BOARD_BUTTON_PIN 32
+ #define BOARD_LED_PIN 33
+
+ #define NR_GPIO_PINS 34
static __attribute__ ((unused)) PinMapping PIN_MAP[NR_GPIO_PINS] = {
/* D0/PB11 */
diff --git a/wirish/ext_interrupts.h b/wirish/ext_interrupts.h
index 304e267..4e22c71 100644
--- a/wirish/ext_interrupts.h
+++ b/wirish/ext_interrupts.h
@@ -86,7 +86,7 @@ void detachInterrupt(uint8 pin);
*
* @see noInterrupts()
*/
-static ALWAYS_INLINE void interrupts() {
+static inline void interrupts() {
nvic_globalirq_enable();
}
@@ -100,7 +100,7 @@ static ALWAYS_INLINE void interrupts() {
*
* @see interrupts()
*/
-static ALWAYS_INLINE void noInterrupts() {
+static inline void noInterrupts() {
nvic_globalirq_disable();
}
diff --git a/wirish/wirish.c b/wirish/wirish.c
index c5dec22..4c84d26 100644
--- a/wirish/wirish.c
+++ b/wirish/wirish.c
@@ -47,7 +47,7 @@ void init(void) {
flash_enable_prefetch();
flash_set_latency(FLASH_WAIT_STATE_2);
-#if NR_FSMC > 0
+#ifdef STM32_HIGH_DENSITY
fsmc_native_sram_init();
#endif
@@ -70,7 +70,7 @@ void init(void) {
timer_init(TIMER2, 1);
timer_init(TIMER3, 1);
timer_init(TIMER4, 1);
-#if NR_TIMERS >= 8
+#ifdef STM32_HIGH_DENSITY
timer_init(TIMER5, 1);
timer_init(TIMER8, 1);
#endif