diff --git a/platform/plat_compat.h b/platform/plat_compat.h index 8a887b8..096e4fd 100644 --- a/platform/plat_compat.h +++ b/platform/plat_compat.h @@ -5,48 +5,52 @@ #ifndef GEX_PLAT_COMPAT_H #define GEX_PLAT_COMPAT_H +#ifdef GEX_PLAT_F103_BLUEPILL + // platform name for the version string -#define GEX_PLATFORM "STM32F103" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// size, determines position of the flash storage -#define FLASH_SIZE (64*1024) -#define SETTINGS_BLOCK_SIZE (1024*2) // this must be a multiple of FLASH pages -#define SETTINGS_FLASH_ADDR (0x08000000 + FLASH_SIZE - SETTINGS_BLOCK_SIZE) - -// Number of GPIO ports A,B,C... -#define PORTS_COUNT 5 - -// Lock jumper config -#define LOCK_JUMPER_PORT 'C' -#define LOCK_JUMPER_PIN 14 - -// Status LED config -#define STATUS_LED_PORT 'C' -#define STATUS_LED_PIN 13 +#define GEX_PLATFORM "STM32F103-Bluepill" + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + #include + + // size, determines position of the flash storage + #define FLASH_SIZE (64*1024) + #define SETTINGS_BLOCK_SIZE (1024*2) // this must be a multiple of FLASH pages + #define SETTINGS_FLASH_ADDR (0x08000000 + FLASH_SIZE - SETTINGS_BLOCK_SIZE) + + // Number of GPIO ports A,B,C... + #define PORTS_COUNT 5 + + // Lock jumper config + #define LOCK_JUMPER_PORT 'C' + #define LOCK_JUMPER_PIN 14 + + // Status LED config + #define STATUS_LED_PORT 'C' + #define STATUS_LED_PIN 13 +#else + #error "BAD PLATFORM! Please select GEX platform using a -DGEX_PLAT_* compile flag" +#endif #endif //GEX_PLAT_COMPAT_H diff --git a/platform/platform.c b/platform/platform.c index d5b13d4..cb612e3 100644 --- a/platform/platform.c +++ b/platform/platform.c @@ -7,18 +7,20 @@ #include "USB/usb_device.h" #include "framework/resources.h" - -// ----- SUPPORTED UNITS ----- - #include "framework/unit_registry.h" #include "units/pin/unit_pin.h" #include "units/neopixel/unit_neopixel.h" + +// ----- SUPPORTED UNITS ----- + void plat_register_units(void) { ureg_add_type(&UNIT_PIN); ureg_add_type(&UNIT_NEOPIXEL); + + // Platform-specific units could be added here } @@ -32,6 +34,8 @@ void plat_init_resources(void) __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); +#ifdef GEX_PLAT_F103_BLUEPILL + // Platform F103C8T6 - free all present resources { rsc_free(NULL, R_ADC1); @@ -73,15 +77,21 @@ void plat_init_resources(void) assert_param(ok); } +#endif } // ---- USB reconnect ---- -/** USB re-connect */ +/** + * USB re-connect (to apply change of the LOCK jumper) + */ void plat_usb_reconnect(void) { +#ifdef GEX_PLAT_F103_BLUEPILL // F103 doesn't have pull-up control, this is probably the best we can do + // This does not seem to trigger descriptors reload. USBD_LL_Reset(&hUsbDeviceFS); +#endif }