66b96822fb
This is a hack to free up TIM3 so that it can be used by the user. Instead we use the PVD irq to call the USB VCP polling function, and trigger it from SysTick (so SysTick itself does not do any processing). The feature is enabled for pyboard lite only, since it lacks timers.
84 lines
3.0 KiB
C
84 lines
3.0 KiB
C
#define MICROPY_HW_BOARD_NAME "PYBLITEv1.0"
|
|
#define MICROPY_HW_MCU_NAME "STM32F411RE"
|
|
#define MICROPY_PY_SYS_PLATFORM "pyboard"
|
|
|
|
#define MICROPY_HW_HAS_SWITCH (1)
|
|
#define MICROPY_HW_HAS_SDCARD (1)
|
|
#define MICROPY_HW_HAS_MMA7660 (1)
|
|
#define MICROPY_HW_HAS_LIS3DSH (0)
|
|
#define MICROPY_HW_HAS_LCD (1)
|
|
#define MICROPY_HW_ENABLE_RNG (0)
|
|
#define MICROPY_HW_ENABLE_RTC (1)
|
|
#define MICROPY_HW_ENABLE_TIMER (1)
|
|
#define MICROPY_HW_ENABLE_SERVO (1)
|
|
#define MICROPY_HW_ENABLE_DAC (0)
|
|
#define MICROPY_HW_ENABLE_SPI1 (1)
|
|
#define MICROPY_HW_ENABLE_SPI2 (1)
|
|
#define MICROPY_HW_ENABLE_SPI3 (0)
|
|
#define MICROPY_HW_ENABLE_CAN (0)
|
|
|
|
// HSE is 12MHz
|
|
#define MICROPY_HW_CLK_PLLM (12)
|
|
#define MICROPY_HW_CLK_PLLN (192)
|
|
#define MICROPY_HW_CLK_PLLP (RCC_PLLP_DIV2)
|
|
#define MICROPY_HW_CLK_PLLQ (4)
|
|
#define MICROPY_HW_CLK_LAST_FREQ (1)
|
|
|
|
// Pyboard lite has an optional 32kHz crystal
|
|
#define MICROPY_HW_RTC_USE_LSE (1)
|
|
#define MICROPY_HW_RTC_USE_US (0)
|
|
#define MICROPY_HW_RTC_USE_CALOUT (1)
|
|
|
|
// UART config
|
|
#define MICROPY_HW_UART1_NAME "XB"
|
|
#define MICROPY_HW_UART1_PORT (GPIOB)
|
|
#define MICROPY_HW_UART1_PINS (GPIO_PIN_6 | GPIO_PIN_7)
|
|
#define MICROPY_HW_UART2_NAME "XA"
|
|
#define MICROPY_HW_UART2_PORT (GPIOA)
|
|
#define MICROPY_HW_UART2_PINS (GPIO_PIN_2 | GPIO_PIN_3)
|
|
#define MICROPY_HW_UART2_RTS (GPIO_PIN_1)
|
|
#define MICROPY_HW_UART2_CTS (GPIO_PIN_0)
|
|
#define MICROPY_HW_UART6_NAME "YA"
|
|
#define MICROPY_HW_UART6_PORT (GPIOC)
|
|
#define MICROPY_HW_UART6_PINS (GPIO_PIN_6 | GPIO_PIN_7)
|
|
|
|
// I2C busses
|
|
#define MICROPY_HW_I2C1_NAME "X"
|
|
#define MICROPY_HW_I2C1_SCL (pin_B6)
|
|
#define MICROPY_HW_I2C1_SDA (pin_B7)
|
|
#define MICROPY_HW_I2C3_NAME "Y"
|
|
#define MICROPY_HW_I2C3_SCL (pin_A8)
|
|
#define MICROPY_HW_I2C3_SDA (pin_B8)
|
|
|
|
// SPI busses
|
|
#define MICROPY_HW_SPI1_NAME "X"
|
|
#define MICROPY_HW_SPI2_NAME "Y"
|
|
|
|
// USRSW has no pullup or pulldown, and pressing the switch makes the input go low
|
|
#define MICROPY_HW_USRSW_PIN (pin_B3)
|
|
#define MICROPY_HW_USRSW_PULL (GPIO_PULLUP)
|
|
#define MICROPY_HW_USRSW_EXTI_MODE (GPIO_MODE_IT_FALLING)
|
|
#define MICROPY_HW_USRSW_PRESSED (0)
|
|
|
|
// The pyboard has 4 LEDs
|
|
#define MICROPY_HW_LED1 (pin_A13) // red
|
|
#define MICROPY_HW_LED2 (pin_A14) // green
|
|
#define MICROPY_HW_LED3 (pin_A15) // yellow
|
|
#define MICROPY_HW_LED4 (pin_B4) // blue
|
|
#define MICROPY_HW_LED4_PWM (0) // TIM3 is now a user timer
|
|
#define MICROPY_HW_LED_OTYPE (GPIO_MODE_OUTPUT_PP)
|
|
#define MICROPY_HW_LED_ON(pin) (pin->gpio->BSRRL = pin->pin_mask)
|
|
#define MICROPY_HW_LED_OFF(pin) (pin->gpio->BSRRH = pin->pin_mask)
|
|
|
|
// SD card detect switch
|
|
#define MICROPY_HW_SDCARD_DETECT_PIN (pin_B5)
|
|
#define MICROPY_HW_SDCARD_DETECT_PULL (GPIO_PULLUP)
|
|
#define MICROPY_HW_SDCARD_DETECT_PRESENT (GPIO_PIN_RESET)
|
|
|
|
// USB config
|
|
#define MICROPY_HW_USB_VBUS_DETECT_PIN (pin_A9)
|
|
#define MICROPY_HW_USE_ALT_IRQ_FOR_CDC (1)
|
|
|
|
// MMA accelerometer config
|
|
#define MICROPY_HW_MMA_AVDD_PIN (pin_A10)
|