#if defined(GEX_PLAT_F103_BLUEPILL) // Platform STM32F103C8T6 Bluepill ($4 board from eBay) // Units supported by the platform (known to work correctly) // free all present resources { rsc_free_range(NULL, R_ADC1, R_ADC2); rsc_free_range(NULL, R_I2C1, R_I2C2); rsc_free_range(NULL, R_SPI1, R_SPI2); rsc_free_range(NULL, R_TIM1, R_TIM4); rsc_free_range(NULL, R_USART1, R_USART3); rsc_free_range(NULL, R_PA0, R_PA15); rsc_free_range(NULL, R_PB0, R_PB15); rsc_free_range(NULL, R_PC13, R_PC15); rsc_free_range(NULL, R_PD0, R_PD1); } // Claim resources not available due to board layout or internal usage { // HAL timebase rv |= rsc_claim(&UNIT_SYSTEM, R_TIM1); // HSE crystal rv |= rsc_claim(&UNIT_SYSTEM, R_PD0); rv |= rsc_claim(&UNIT_SYSTEM, R_PD1); // SWD rv |= rsc_claim(&UNIT_SYSTEM, R_PA13); rv |= rsc_claim(&UNIT_SYSTEM, R_PA14); // USB rv |= rsc_claim(&UNIT_SYSTEM, R_PA11); rv |= rsc_claim(&UNIT_SYSTEM, R_PA12); // BOOT pin(s) rv |= rsc_claim(&UNIT_SYSTEM, R_PB2); // BOOT1 } #elif defined(STM32F072xB) // Platform STM32F073RBT // Free all present resources { rsc_free(NULL, R_ADC1); // rsc_free(NULL, R_CAN1); // rsc_free_range(NULL, R_COMP1, R_COMP2); rsc_free(NULL, R_DAC1); // rsc_free(NULL, R_HDMI_CEC); rsc_free(NULL, R_TSC); rsc_free_range(NULL, R_I2C1, R_I2C2); // rsc_free_range(NULL, R_I2S1, R_I2S2); rsc_free_range(NULL, R_SPI1, R_SPI2); rsc_free_range(NULL, R_TIM1, R_TIM3); rsc_free_range(NULL, R_TIM6, R_TIM7); rsc_free_range(NULL, R_TIM14, R_TIM17); rsc_free_range(NULL, R_USART1, R_USART4); rsc_free_range(NULL, R_DMA1_1, R_DMA1_7); rsc_free_range(NULL, R_PA0, R_PA15); rsc_free_range(NULL, R_PB0, R_PB15); rsc_free_range(NULL, R_PC0, R_PC15); rsc_free(NULL, R_PD2); rsc_free_range(NULL, R_PF0, R_PF1); } // Claim resources not available due to board layout or internal usage { // HAL timebase rv |= rsc_claim(&UNIT_SYSTEM, R_TIM17); // HSE crystal rv |= rsc_claim(&UNIT_SYSTEM, R_PF0); #if PLAT_FULL_XTAL rv |= rsc_claim(&UNIT_SYSTEM, R_PF1); // - not used in BYPASS mode #endif // SWD // rv |= rsc_claim(&UNIT_SYSTEM, R_PA13); // rv |= rsc_claim(&UNIT_SYSTEM, R_PA14); // USB rv |= rsc_claim(&UNIT_SYSTEM, R_PA11); rv |= rsc_claim(&UNIT_SYSTEM, R_PA12); #if defined(GEX_PLAT_F072_ZERO) // unconnected pins rv |= rsc_claim_range(&UNIT_PLATFORM, R_PC0, R_PC1); rv |= rsc_claim_range(&UNIT_PLATFORM, R_PC4, R_PC9); #endif } #elif defined(GEX_PLAT_F303_DISCOVERY) // Platform STM32F303VCT // Additional GPIO ports __HAL_RCC_GPIOF_CLK_ENABLE(); // Units supported by the platform (known to work correctly) // ureg_add_type(&UNIT_XYZ); // Free all present resources { rsc_free_range(NULL, R_ADC1, R_ADC4); // rsc_free(NULL, R_CAN1); // rsc_free_range(NULL, R_COMP1, R_COMP7); // rsc_free(NULL, R_HDMI_CEC); rsc_free(NULL, R_DAC1); rsc_free_range(NULL, R_I2C1, R_I2C2); rsc_free_range(NULL, R_I2S2, R_I2S3); // rsc_free_range(NULL, R_OPAMP1, R_OPAMP4); rsc_free_range(NULL, R_SPI1, R_SPI3); rsc_free_range(NULL, R_TIM1, R_TIM4); rsc_free_range(NULL, R_TIM6, R_TIM8); rsc_free_range(NULL, R_TIM15, R_TIM17); rsc_free(NULL, R_TSC); rsc_free_range(NULL, R_USART1, R_USART5); rsc_free_range(NULL, R_PA0, R_PA15); rsc_free_range(NULL, R_PB0, R_PB15); rsc_free_range(NULL, R_PC0, R_PC15); rsc_free_range(NULL, R_PD0, R_PD15); rsc_free_range(NULL, R_PE0, R_PE15); rsc_free_range(NULL, R_PF0, R_PF2); rsc_free(NULL, R_PF4); rsc_free_range(NULL, R_PF9, R_PF10); } // Claim resources not available due to board layout or internal usage { // HAL timebase rv |= rsc_claim(&UNIT_SYSTEM, R_TIM1); // HSE crystal rv |= rsc_claim(&UNIT_SYSTEM, R_PF0); //rv |= rsc_claim(&UNIT_SYSTEM, R_PF1); // - not used in BYPASS mode // SWD rv |= rsc_claim(&UNIT_SYSTEM, R_PA13); rv |= rsc_claim(&UNIT_SYSTEM, R_PA14); // USB rv |= rsc_claim(&UNIT_SYSTEM, R_PA11); rv |= rsc_claim(&UNIT_SYSTEM, R_PA12); // BOOT pin(s) rv |= rsc_claim(&UNIT_SYSTEM, R_PB2); // BOOT1 } #elif defined(GEX_PLAT_F407_DISCOVERY) // Platform STM32F407VGT // Additional GPIO ports __HAL_RCC_GPIOF_CLK_ENABLE(); // Units supported by the platform (known to work correctly) // ureg_add_type(&UNIT_XYZ); // Free all present resources { rsc_free_range(NULL, R_ADC1, R_ADC3); // rsc_free_range(NULL, R_CAN1, R_CAN2); // rsc_free_range(NULL, R_COMP1, R_COMP7); rsc_free(NULL, R_DAC1); // rsc_free(NULL, R_DCMI); // rsc_free(NULL, R_ETH); // rsc_free(NULL, R_FSMC); rsc_free_range(NULL, R_I2C1, R_I2C3); rsc_free_range(NULL, R_I2S2, R_I2S3); // rsc_free(NULL, R_SDIO); rsc_free_range(NULL, R_SPI1, R_SPI3); rsc_free_range(NULL, R_TIM1, R_TIM14); rsc_free_range(NULL, R_USART1, R_USART3); rsc_free(NULL, R_USART6); rsc_free_range(NULL, R_PA0, R_PA15); rsc_free_range(NULL, R_PB0, R_PB15); rsc_free_range(NULL, R_PC0, R_PC15); rsc_free_range(NULL, R_PD0, R_PD15); rsc_free_range(NULL, R_PE0, R_PE15); // also has 2 PH pins // F407 appears to have fewer GPIOs than F303? } // Claim resources not available due to board layout or internal usage { // HAL timebase rv |= rsc_claim(&UNIT_SYSTEM, R_TIM1); // HSE crystal // H0 and H1 // SWD rv |= rsc_claim(&UNIT_SYSTEM, R_PA13); rv |= rsc_claim(&UNIT_SYSTEM, R_PA14); // USB rv |= rsc_claim(&UNIT_SYSTEM, R_PA11); rv |= rsc_claim(&UNIT_SYSTEM, R_PA12); // BOOT pin(s) rv |= rsc_claim(&UNIT_SYSTEM, R_PB2); // BOOT1 } #else #error "BAD PLATFORM!" #endif