diff options
-rw-r--r-- | stm/Makefile | 3 | ||||
-rw-r--r-- | stm/led.c | 18 | ||||
-rw-r--r-- | stm/lib/stm324x7i_eval.c | 151 | ||||
-rw-r--r-- | stm/lib/stm324x7i_eval.h | 283 | ||||
-rw-r--r-- | stm/lib/stm324x7i_eval_sdio_sd.c | 4 | ||||
-rw-r--r-- | stm/mpconfigport.h | 6 | ||||
-rw-r--r-- | stm/usrsw.c | 11 |
7 files changed, 59 insertions, 417 deletions
diff --git a/stm/Makefile b/stm/Makefile index f228e5fe2e..75fdee7c62 100644 --- a/stm/Makefile +++ b/stm/Makefile @@ -17,7 +17,6 @@ STMSRC=lib FATFSSRC=fatfs CC3KSRC=cc3k DFU=../tools/dfu.py -TARGET=PYBOARD OSC_VALUE=8000000 AS = arm-none-eabi-as @@ -27,7 +26,7 @@ OBJCOPY = arm-none-eabi-objcopy SIZE = arm-none-eabi-size CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion -DSTM32F40_41xxx -DUSE_STDPERIPH_DRIVER -DHSE_VALUE=$(OSC_VALUE) -CFLAGS = -I. -I$(PY_SRC) -I$(FATFSSRC) -I$(CMSIS) -I$(STMSRC) -Wall -ansi -std=gnu99 $(CFLAGS_CORTEX_M4) -D$(TARGET) +CFLAGS = -I. -I$(PY_SRC) -I$(FATFSSRC) -I$(CMSIS) -I$(STMSRC) -Wall -ansi -std=gnu99 $(CFLAGS_CORTEX_M4) #CFLAGS += -I$(STMOTGSRC) -DUSE_HOST_MODE -DUSE_OTG_MODE #Debugging/Optimization @@ -32,6 +32,24 @@ #define PYB_LED_ON(port, pin) (port->BSRRH = pin) #define PYB_LED_OFF(port, pin) (port->BSRRL = pin) +#elif defined(PYBOARD4) + #define PYB_LED1_PORT (GPIOA) + #define PYB_LED1_PIN (GPIO_Pin_13) + + #define PYB_LED2_PORT (GPIOA) + #define PYB_LED2_PIN (GPIO_Pin_14) + + #define PYB_LED3_PORT (GPIOA) + #define PYB_LED3_PIN (GPIO_Pin_15) + + #define PYB_LED4_PORT (GPIOB) + #define PYB_LED4_PIN (GPIO_Pin_4) + + #define PYB_OTYPE (GPIO_OType_PP) + + #define PYB_LED_ON(port, pin) (port->BSRRL = pin) + #define PYB_LED_OFF(port, pin) (port->BSRRH = pin) + #elif defined(STM32F4DISC) #define PYB_LED1_PORT (GPIOD) #define PYB_LED1_PIN (GPIO_Pin_14) diff --git a/stm/lib/stm324x7i_eval.c b/stm/lib/stm324x7i_eval.c index ad7c5469c7..fa9fff31fe 100644 --- a/stm/lib/stm324x7i_eval.c +++ b/stm/lib/stm324x7i_eval.c @@ -41,124 +41,6 @@ #include "stm324x7i_eval.h"
//#include "stm32f4xx_i2c.h"
-/** @addtogroup Utilities
- * @{
- */
-
-/** @addtogroup STM32_EVAL
- * @{
- */
-
-/** @addtogroup STM324x7I_EVAL
- * @{
- */
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL
- * @brief This file provides firmware functions to manage Leds, push-buttons,
- * COM ports, SD card on SDIO and serial EEPROM (sEE) available on
- * STM324x7I-EVAL evaluation board from STMicroelectronics.
- * @{
- */
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Private_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Private_Variables
- * @{
- */
-#if 0
-GPIO_TypeDef* GPIO_PORT[LEDn] = {LED1_GPIO_PORT, LED2_GPIO_PORT, LED3_GPIO_PORT,
- LED4_GPIO_PORT};
-const uint16_t GPIO_PIN[LEDn] = {LED1_PIN, LED2_PIN, LED3_PIN,
- LED4_PIN};
-const uint32_t GPIO_CLK[LEDn] = {LED1_GPIO_CLK, LED2_GPIO_CLK, LED3_GPIO_CLK,
- LED4_GPIO_CLK};
-
-GPIO_TypeDef* BUTTON_PORT[BUTTONn] = {WAKEUP_BUTTON_GPIO_PORT, TAMPER_BUTTON_GPIO_PORT,
- KEY_BUTTON_GPIO_PORT};
-
-const uint16_t BUTTON_PIN[BUTTONn] = {WAKEUP_BUTTON_PIN, TAMPER_BUTTON_PIN,
- KEY_BUTTON_PIN};
-
-const uint32_t BUTTON_CLK[BUTTONn] = {WAKEUP_BUTTON_GPIO_CLK, TAMPER_BUTTON_GPIO_CLK,
- KEY_BUTTON_GPIO_CLK};
-
-const uint16_t BUTTON_EXTI_LINE[BUTTONn] = {WAKEUP_BUTTON_EXTI_LINE,
- TAMPER_BUTTON_EXTI_LINE,
- KEY_BUTTON_EXTI_LINE};
-
-const uint16_t BUTTON_PORT_SOURCE[BUTTONn] = {WAKEUP_BUTTON_EXTI_PORT_SOURCE,
- TAMPER_BUTTON_EXTI_PORT_SOURCE,
- KEY_BUTTON_EXTI_PORT_SOURCE};
-
-const uint16_t BUTTON_PIN_SOURCE[BUTTONn] = {WAKEUP_BUTTON_EXTI_PIN_SOURCE,
- TAMPER_BUTTON_EXTI_PIN_SOURCE,
- KEY_BUTTON_EXTI_PIN_SOURCE};
-const uint16_t BUTTON_IRQn[BUTTONn] = {WAKEUP_BUTTON_EXTI_IRQn, TAMPER_BUTTON_EXTI_IRQn,
- KEY_BUTTON_EXTI_IRQn};
-
-GPIO_TypeDef* COM_TX_PORT[COMn] = {EVAL_COM1_TX_GPIO_PORT};
-
-GPIO_TypeDef* COM_RX_PORT[COMn] = {EVAL_COM1_RX_GPIO_PORT};
-
-const uint32_t COM_TX_PORT_CLK[COMn] = {EVAL_COM1_TX_GPIO_CLK};
-
-const uint32_t COM_RX_PORT_CLK[COMn] = {EVAL_COM1_RX_GPIO_CLK};
-
-const uint16_t COM_TX_PIN[COMn] = {EVAL_COM1_TX_PIN};
-
-const uint16_t COM_RX_PIN[COMn] = {EVAL_COM1_RX_PIN};
-
-const uint16_t COM_TX_PIN_SOURCE[COMn] = {EVAL_COM1_TX_SOURCE};
-
-const uint16_t COM_RX_PIN_SOURCE[COMn] = {EVAL_COM1_RX_SOURCE};
-
-const uint16_t COM_TX_AF[COMn] = {EVAL_COM1_TX_AF};
-
-const uint16_t COM_RX_AF[COMn] = {EVAL_COM1_RX_AF};
-
-DMA_InitTypeDef sEEDMA_InitStructure;
-NVIC_InitTypeDef NVIC_InitStructure;
-#endif
-
-/**
- * @}
- */
-
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Private_FunctionPrototypes
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Private_Functions
- * @{
- */
-
/**
* @brief DeInitializes the SDIO interface.
* @param None
@@ -240,12 +122,21 @@ void SD_LowLevel_Init(void) GPIO_Init(GPIOC, &GPIO_InitStructure);
/*!< Configure SD_SPI_DETECT_PIN pin: SD Card detect pin */
- // dpgeorge: switch is normally open, connected to VDD when card inserted
+#if defined(PYBOARD)
+ // dpgeorge: PYBv2-v3: switch is normally open, connected to VDD when card inserted
GPIO_InitStructure.GPIO_Pin = SD_DETECT_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; // needs to be 2MHz due to restrictions on PC13
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;
GPIO_Init(SD_DETECT_GPIO_PORT, &GPIO_InitStructure);
+#elif defined(PYBOARD4)
+ // dpgeorge: PYBv4: switch is normally open, connected to GND when card inserted
+ GPIO_InitStructure.GPIO_Pin = SD_DETECT_PIN;
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
+ GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
+ GPIO_Init(SD_DETECT_GPIO_PORT, &GPIO_InitStructure);
+#endif
/* Enable the SDIO APB2 Clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SDIO, ENABLE);
@@ -337,26 +228,4 @@ void SD_LowLevel_DMA_RxConfig(uint32_t *BufferDST, uint32_t BufferSize) DMA_Cmd(SD_SDIO_DMA_STREAM, ENABLE);
}
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stm/lib/stm324x7i_eval.h b/stm/lib/stm324x7i_eval.h index 0c39a292f4..a931c8c9b4 100644 --- a/stm/lib/stm324x7i_eval.h +++ b/stm/lib/stm324x7i_eval.h @@ -25,7 +25,7 @@ *
******************************************************************************
*/
-
+
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STM324x7I_EVAL_H
#define __STM324x7I_EVAL_H
@@ -36,189 +36,21 @@ /* Includes ------------------------------------------------------------------*/
#include "stm32f4xx.h"
-
-/** @addtogroup Utilities
- * @{
- */
-
-/** @addtogroup STM32_EVAL
- * @{
- */
-
-/** @addtogroup STM324x7I_EVAL
- * @{
- */
-
-/** @addtogroup STM324x7I_EVAL_LOW_LEVEL
- * @{
- */
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Exported_Types
- * @{
- */
-#if 0
-typedef enum
-{
- LED1 = 0,
- LED2 = 1,
- LED3 = 2,
- LED4 = 3
-} Led_TypeDef;
-
-typedef enum
-{
- BUTTON_WAKEUP = 0,
- BUTTON_TAMPER = 1,
- BUTTON_KEY = 2,
- BUTTON_RIGHT = 3,
- BUTTON_LEFT = 4,
- BUTTON_UP = 5,
- BUTTON_DOWN = 6,
- BUTTON_SEL = 7
-} Button_TypeDef;
-
-typedef enum
-{
- BUTTON_MODE_GPIO = 0,
- BUTTON_MODE_EXTI = 1
-} ButtonMode_TypeDef;
-
-typedef enum
-{
- JOY_NONE = 0,
- JOY_SEL = 1,
- JOY_DOWN = 2,
- JOY_LEFT = 3,
- JOY_RIGHT = 4,
- JOY_UP = 5
-} JOYState_TypeDef
-;
-
-typedef enum
-{
- COM1 = 0,
- COM2 = 1
-} COM_TypeDef;
-/**
- * @}
- */
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Exported_Constants
- * @{
- */
-
-/**
- * @brief Define for STM324x7I_EVAL board
- */
-#if !defined (USE_STM324x7I_EVAL)
- #define USE_STM324x7I_EVAL
-#endif
-
-/** @addtogroup STM324x7I_EVAL_LOW_LEVEL_LED
- * @{
- */
-#define LEDn 4
-
-#define LED1_PIN GPIO_Pin_6
-#define LED1_GPIO_PORT GPIOG
-#define LED1_GPIO_CLK RCC_AHB1Periph_GPIOG
-
-#define LED2_PIN GPIO_Pin_8
-#define LED2_GPIO_PORT GPIOG
-#define LED2_GPIO_CLK RCC_AHB1Periph_GPIOG
-
-#define LED3_PIN GPIO_Pin_9
-#define LED3_GPIO_PORT GPIOI
-#define LED3_GPIO_CLK RCC_AHB1Periph_GPIOI
-
-#define LED4_PIN GPIO_Pin_7
-#define LED4_GPIO_PORT GPIOC
-#define LED4_GPIO_CLK RCC_AHB1Periph_GPIOC
-
-/**
- * @}
- */
-
-/** @addtogroup STM324x7I_EVAL_LOW_LEVEL_BUTTON
- * @{
- */
-#define BUTTONn 3 /*!< Joystick pins are connected to
- an IO Expander (accessible through
- I2C1 interface) */
-
-/**
- * @brief Wakeup push-button
- */
-#define WAKEUP_BUTTON_PIN GPIO_Pin_0
-#define WAKEUP_BUTTON_GPIO_PORT GPIOA
-#define WAKEUP_BUTTON_GPIO_CLK RCC_AHB1Periph_GPIOA
-#define WAKEUP_BUTTON_EXTI_LINE EXTI_Line0
-#define WAKEUP_BUTTON_EXTI_PORT_SOURCE EXTI_PortSourceGPIOA
-#define WAKEUP_BUTTON_EXTI_PIN_SOURCE EXTI_PinSource0
-#define WAKEUP_BUTTON_EXTI_IRQn EXTI0_IRQn
-
-/**
- * @brief Tamper push-button
- */
-#define TAMPER_BUTTON_PIN GPIO_Pin_13
-#define TAMPER_BUTTON_GPIO_PORT GPIOC
-#define TAMPER_BUTTON_GPIO_CLK RCC_AHB1Periph_GPIOC
-#define TAMPER_BUTTON_EXTI_LINE EXTI_Line13
-#define TAMPER_BUTTON_EXTI_PORT_SOURCE EXTI_PortSourceGPIOC
-#define TAMPER_BUTTON_EXTI_PIN_SOURCE EXTI_PinSource13
-#define TAMPER_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-
-/**
- * @brief Key push-button
- */
-#define KEY_BUTTON_PIN GPIO_Pin_15
-#define KEY_BUTTON_GPIO_PORT GPIOG
-#define KEY_BUTTON_GPIO_CLK RCC_AHB1Periph_GPIOG
-#define KEY_BUTTON_EXTI_LINE EXTI_Line15
-#define KEY_BUTTON_EXTI_PORT_SOURCE EXTI_PortSourceGPIOG
-#define KEY_BUTTON_EXTI_PIN_SOURCE EXTI_PinSource15
-#define KEY_BUTTON_EXTI_IRQn EXTI15_10_IRQn
-/**
- * @}
- */
-
-/** @addtogroup STM324x7I_EVAL_LOW_LEVEL_COM
- * @{
- */
-#define COMn 1
+#include "mpconfig.h"
/**
- * @brief Definition for COM port1, connected to USART3
- */
-#define EVAL_COM1 USART3
-#define EVAL_COM1_CLK RCC_APB1Periph_USART3
-#define EVAL_COM1_TX_PIN GPIO_Pin_10
-#define EVAL_COM1_TX_GPIO_PORT GPIOC
-#define EVAL_COM1_TX_GPIO_CLK RCC_AHB1Periph_GPIOC
-#define EVAL_COM1_TX_SOURCE GPIO_PinSource10
-#define EVAL_COM1_TX_AF GPIO_AF_USART3
-#define EVAL_COM1_RX_PIN GPIO_Pin_11
-#define EVAL_COM1_RX_GPIO_PORT GPIOC
-#define EVAL_COM1_RX_GPIO_CLK RCC_AHB1Periph_GPIOC
-#define EVAL_COM1_RX_SOURCE GPIO_PinSource11
-#define EVAL_COM1_RX_AF GPIO_AF_USART3
-#define EVAL_COM1_IRQn USART3_IRQn
-#endif
-
-/**
- * @}
- */
-
-/** @addtogroup STM324x7I_EVAL_LOW_LEVEL_SD_FLASH
- * @{
- */
-/**
* @brief SD FLASH SDIO Interface
*/
+#if defined(PYBOARD)
#define SD_DETECT_PIN GPIO_Pin_13 /* PC.13 */
#define SD_DETECT_GPIO_PORT GPIOC /* GPIOC */
#define SD_DETECT_GPIO_CLK RCC_AHB1Periph_GPIOC
-
+#elif defined(PYBOARD4)
+#define SD_DETECT_PIN GPIO_Pin_8 /* PA..8 */
+#define SD_DETECT_GPIO_PORT GPIOA /* GPIOA */
+#define SD_DETECT_GPIO_CLK RCC_AHB1Periph_GPIOA
+#endif
+
#define SDIO_FIFO_ADDRESS ((uint32_t)0x40012C80)
/**
* @brief SDIO Intialization Frequency (400KHz max)
@@ -257,78 +89,6 @@ typedef enum #define SD_SDIO_DMA_IRQHANDLER DMA2_Stream6_IRQHandler
#endif /* SD_SDIO_DMA_STREAM3 */
-/**
- * @}
- */
-
-/** @addtogroup STM324x7I_EVAL_LOW_LEVEL_I2C_EE
- * @{
- */
-/**
- * @brief I2C EEPROM Interface pins
- */
-#if 0
-#define sEE_I2C I2C1
-#define sEE_I2C_CLK RCC_APB1Periph_I2C1
-#define sEE_I2C_SCL_PIN GPIO_Pin_6 /* PB.06 */
-#define sEE_I2C_SCL_GPIO_PORT GPIOB /* GPIOB */
-#define sEE_I2C_SCL_GPIO_CLK RCC_AHB1Periph_GPIOB
-#define sEE_I2C_SCL_SOURCE GPIO_PinSource6
-#define sEE_I2C_SCL_AF GPIO_AF_I2C1
-#define sEE_I2C_SDA_PIN GPIO_Pin_9 /* PB.09 */
-#define sEE_I2C_SDA_GPIO_PORT GPIOB /* GPIOB */
-#define sEE_I2C_SDA_GPIO_CLK RCC_AHB1Periph_GPIOB
-#define sEE_I2C_SDA_SOURCE GPIO_PinSource9
-#define sEE_I2C_SDA_AF GPIO_AF_I2C1
-#define sEE_M24C64_32
-
-#define sEE_I2C_DMA DMA1
-#define sEE_I2C_DMA_CHANNEL DMA_Channel_1
-#define sEE_I2C_DMA_STREAM_TX DMA1_Stream6
-#define sEE_I2C_DMA_STREAM_RX DMA1_Stream0
-#define sEE_I2C_DMA_CLK RCC_AHB1Periph_DMA1
-#define sEE_I2C_DR_Address ((uint32_t)0x40005410)
-#define sEE_USE_DMA
-
-#define sEE_I2C_DMA_TX_IRQn DMA1_Stream6_IRQn
-#define sEE_I2C_DMA_RX_IRQn DMA1_Stream0_IRQn
-#define sEE_I2C_DMA_TX_IRQHandler DMA1_Stream6_IRQHandler
-#define sEE_I2C_DMA_RX_IRQHandler DMA1_Stream0_IRQHandler
-#define sEE_I2C_DMA_PREPRIO 0
-#define sEE_I2C_DMA_SUBPRIO 0
-
-#define sEE_TX_DMA_FLAG_FEIF DMA_FLAG_FEIF6
-#define sEE_TX_DMA_FLAG_DMEIF DMA_FLAG_DMEIF6
-#define sEE_TX_DMA_FLAG_TEIF DMA_FLAG_TEIF6
-#define sEE_TX_DMA_FLAG_HTIF DMA_FLAG_HTIF6
-#define sEE_TX_DMA_FLAG_TCIF DMA_FLAG_TCIF6
-#define sEE_RX_DMA_FLAG_FEIF DMA_FLAG_FEIF0
-#define sEE_RX_DMA_FLAG_DMEIF DMA_FLAG_DMEIF0
-#define sEE_RX_DMA_FLAG_TEIF DMA_FLAG_TEIF0
-#define sEE_RX_DMA_FLAG_HTIF DMA_FLAG_HTIF0
-#define sEE_RX_DMA_FLAG_TCIF DMA_FLAG_TCIF0
-
-#define sEE_DIRECTION_TX 0
-#define sEE_DIRECTION_RX 1
-
-/* Time constant for the delay caclulation allowing to have a millisecond
- incrementing counter. This value should be equal to (System Clock / 1000).
- ie. if system clock = 168MHz then sEE_TIME_CONST should be 168. */
-#define sEE_TIME_CONST 168
-#endif
-/**
- * @}
- */
-/**
- * @}
- */
-
-/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Exported_Macros
- * @{
- */
-/**
- * @}
- */
/** @defgroup STM324x7I_EVAL_LOW_LEVEL_Exported_Functions
* @{
@@ -337,34 +97,11 @@ void SD_LowLevel_DeInit(void); void SD_LowLevel_Init(void);
void SD_LowLevel_DMA_TxConfig(uint32_t *BufferSRC, uint32_t BufferSize);
void SD_LowLevel_DMA_RxConfig(uint32_t *BufferDST, uint32_t BufferSize);
-#if 0
-void sEE_LowLevel_DeInit(void);
-void sEE_LowLevel_Init(void);
-void sEE_LowLevel_DMAConfig(uint32_t pBuffer, uint32_t BufferSize, uint32_t Direction);
-#endif
-/**
- * @}
- */
-
+
#ifdef __cplusplus
}
#endif
#endif /* __STM324x7I_EVAL_H */
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stm/lib/stm324x7i_eval_sdio_sd.c b/stm/lib/stm324x7i_eval_sdio_sd.c index f10e0bfa58..f0e2ffc3e2 100644 --- a/stm/lib/stm324x7i_eval_sdio_sd.c +++ b/stm/lib/stm324x7i_eval_sdio_sd.c @@ -518,7 +518,11 @@ uint8_t SD_Detect(void) __IO uint8_t status = SD_PRESENT;
/*!< Check GPIO to detect SD */
+#if defined(PYBOARD)
if (GPIO_ReadInputDataBit(SD_DETECT_GPIO_PORT, SD_DETECT_PIN) != Bit_SET)
+#elif defined(PYBOARD4)
+ if (GPIO_ReadInputDataBit(SD_DETECT_GPIO_PORT, SD_DETECT_PIN) == Bit_SET)
+#endif
{
status = SD_NOT_PRESENT;
}
diff --git a/stm/mpconfigport.h b/stm/mpconfigport.h index dfa46cc504..2d9eba1f48 100644 --- a/stm/mpconfigport.h +++ b/stm/mpconfigport.h @@ -19,3 +19,9 @@ typedef const void *machine_const_ptr_t; // must be of pointer size typedef float machine_float_t; machine_float_t machine_sqrt(machine_float_t x); + +// board specific definitions + +//#define PYBOARD +#define PYBOARD4 +//#define STM32F4DISC diff --git a/stm/usrsw.c b/stm/usrsw.c index dc2b03f3db..6450b74a7c 100644 --- a/stm/usrsw.c +++ b/stm/usrsw.c @@ -19,6 +19,15 @@ #define USRSW_EXTI_LINE (EXTI_Line13) #define USRSW_EXTI_IRQN (EXTI15_10_IRQn) #define USRSW_EXTI_EDGE (EXTI_Trigger_Rising) +#elif defined (PYBOARD4) + #define USRSW_PORT (GPIOB) + #define USRSW_PIN (GPIO_Pin_3) + #define USRSW_PUPD (GPIO_PuPd_UP) + #define USRSW_EXTI_PIN (EXTI_PinSource3) + #define USRSW_EXTI_PORT (EXTI_PortSourceGPIOB) + #define USRSW_EXTI_LINE (EXTI_Line3) + #define USRSW_EXTI_IRQN (EXTI15_10_IRQn) + #define USRSW_EXTI_EDGE (EXTI_Trigger_Rising) #elif defined (STM32F4DISC) #define USRSW_PORT (GPIOA) #define USRSW_PIN (GPIO_Pin_0) @@ -64,7 +73,7 @@ void switch_init(void) { } int switch_get(void) { -#if defined (PYBOARD) +#if defined (PYBOARD) || defined (PYBOARD4) if (USRSW_PORT->IDR & USRSW_PIN) { // pulled high, so switch is not pressed return 0; |