diff options
-rw-r--r-- | demos/ARMCM3-STM32F103-GCC/board.c | 20 | ||||
-rw-r--r-- | demos/ARMCM3-STM32F103-GCC/board.h | 39 | ||||
-rw-r--r-- | demos/ARMCM3-STM32F103-GCC/stm32lib/stm32f10x_conf.h | 20 | ||||
-rw-r--r-- | ports/ARMCM3/chcore.c | 4 |
4 files changed, 71 insertions, 12 deletions
diff --git a/demos/ARMCM3-STM32F103-GCC/board.c b/demos/ARMCM3-STM32F103-GCC/board.c index ec5ac2fb4..1d689bee8 100644 --- a/demos/ARMCM3-STM32F103-GCC/board.c +++ b/demos/ARMCM3-STM32F103-GCC/board.c @@ -19,10 +19,30 @@ #include <ch.h>
+#include "board.h"
+
/*
* Hardware initialization goes here.
* NOTE: Interrupts are still disabled.
*/
void hwinit(void) {
+ /*
+ * I/O ports initialization as specified in board.h.
+ */
+ GPIOA->CRL = VAL_GPIOACRL;
+ GPIOA->CRH = VAL_GPIOACRH;
+ GPIOA->ODR = VAL_GPIOAODR;
+
+ GPIOB->CRL = VAL_GPIOBCRL;
+ GPIOB->CRH = VAL_GPIOBCRH;
+ GPIOB->ODR = VAL_GPIOBODR;
+
+ GPIOC->CRL = VAL_GPIOCCRL;
+ GPIOC->CRH = VAL_GPIOCCRH;
+ GPIOC->ODR = VAL_GPIOCODR;
+
+ GPIOD->CRL = VAL_GPIODCRL;
+ GPIOD->CRH = VAL_GPIODCRH;
+ GPIOD->ODR = VAL_GPIODODR;
}
diff --git a/demos/ARMCM3-STM32F103-GCC/board.h b/demos/ARMCM3-STM32F103-GCC/board.h index 88459c3e7..cdb9d2588 100644 --- a/demos/ARMCM3-STM32F103-GCC/board.h +++ b/demos/ARMCM3-STM32F103-GCC/board.h @@ -20,6 +20,45 @@ #ifndef _BOARD_H_
#define _BOARD_H_
+#undef FALSE
+#undef TRUE
+#ifndef __STM32F10x_MAP_H
+#include "stm32lib/stm32f10x_map.h"
+#endif
+
#define BOARD_OLIMEX_STM32_P103
+#define LSECLK 32768
+#define HSECLK 8000000
+#define PLLDIV 1
+#define PLLMUL 9
+#define PLLCLK ((HSECLK / PLLDIV) * PLLMUL)
+
+#define GPIOA_BUTTON (1 << 0)
+
+#define GPIOC_MMCWP (1 << 6)
+#define GPIOC_MMCCP (1 << 7)
+#define GPIOC_CANCNTL (1 << 10)
+#define GPIOC_DISC (1 << 11)
+#define GPIOC_LED (1 << 12)
+
+/*
+ * All inputs with pullups unless otherwise specified.
+ */
+#define VAL_GPIOACRL 0x88888884 // PA0:FI
+#define VAL_GPIOACRH 0x88888888
+#define VAL_GPIOAODR 0xFFFFFFFF
+
+#define VAL_GPIOBCRL 0x88883888 // PB3:PP
+#define VAL_GPIOBCRH 0x88888888
+#define VAL_GPIOBODR 0xFFFFFFFF
+
+#define VAL_GPIOCCRL 0x44888888 // PC6,PC7:FI
+#define VAL_GPIOCCRH 0x88833888 // PC11,PC12:PP
+#define VAL_GPIOCODR 0xFFFFFFFF
+
+#define VAL_GPIODCRL 0x88888844 // PD0,PD1:FI
+#define VAL_GPIODCRH 0x88888888
+#define VAL_GPIODODR 0xFFFFFFFF
+
#endif /* _BOARD_H_ */
diff --git a/demos/ARMCM3-STM32F103-GCC/stm32lib/stm32f10x_conf.h b/demos/ARMCM3-STM32F103-GCC/stm32lib/stm32f10x_conf.h index 59ae65d01..8e51a48fd 100644 --- a/demos/ARMCM3-STM32F103-GCC/stm32lib/stm32f10x_conf.h +++ b/demos/ARMCM3-STM32F103-GCC/stm32lib/stm32f10x_conf.h @@ -34,7 +34,7 @@ //#define _ADC2
/************************************* BKP ************************************/
-//#define _BKP
+//#define _BKP
/************************************* CAN ************************************/
//#define _CAN
@@ -60,11 +60,11 @@ /* #define _FLASH_PROG */
/************************************* GPIO ***********************************/
-//#define _GPIO
-//#define _GPIOA
-//#define _GPIOB
-//#define _GPIOC
-//#define _GPIOD
+#define _GPIO
+#define _GPIOA
+#define _GPIOB
+#define _GPIOC
+#define _GPIOD
//#define _GPIOE
//#define _AFIO
@@ -94,7 +94,7 @@ //#define _SPI2
/************************************* SysTick ********************************/
-//#define _SysTick
+#define _SysTick
/************************************* TIM1 ***********************************/
//#define _TIM1
@@ -123,13 +123,13 @@ /*******************************************************************************
* Macro Name : assert_param
* Description : The assert_param macro is used for function's parameters check.
-* It is used only if the library is compiled in DEBUG mode.
+* It is used only if the library is compiled in DEBUG mode.
* Input : - expr: If expr is false, it calls assert_failed function
* which reports the name of the source file and the source
-* line number of the call that failed.
+* line number of the call that failed.
* If expr is true, it returns no value.
* Return : None
-*******************************************************************************/
+*******************************************************************************/
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((u8 *)__FILE__, __LINE__))
/* Exported functions ------------------------------------------------------- */
void assert_failed(u8* file, u32 line);
diff --git a/ports/ARMCM3/chcore.c b/ports/ARMCM3/chcore.c index 94a734dba..cb95916c3 100644 --- a/ports/ARMCM3/chcore.c +++ b/ports/ARMCM3/chcore.c @@ -70,8 +70,6 @@ void threadstart(void) { "bl chThdExit ");
}
-void *retaddr;
-
/*
* System Timer vector.
*/
@@ -84,6 +82,8 @@ void SysTickVector(void) { chSysIRQExitI();
}
+void *retaddr;
+
/*
* To be invoked at the end of any interrupt handler that can trigger a
* reschedule.
|