aboutsummaryrefslogtreecommitdiffstats
path: root/src/stm32/stm32f1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stm32/stm32f1.c')
-rw-r--r--src/stm32/stm32f1.c78
1 files changed, 34 insertions, 44 deletions
diff --git a/src/stm32/stm32f1.c b/src/stm32/stm32f1.c
index 86a5efac..b9c1a434 100644
--- a/src/stm32/stm32f1.c
+++ b/src/stm32/stm32f1.c
@@ -128,55 +128,45 @@ gpio_peripheral(uint32_t gpio, uint32_t mode, int pullup)
// way from other STM32s.
// Code below is emulating a few mappings to work like an STM32F4
uint32_t func = (mode >> 4) & 0xf;
- if (gpio == GPIO('B', 8) || gpio == GPIO('B', 9)) {
- if (func == 9) {
- // CAN
- stm32f1_alternative_remap(AFIO_MAPR_CAN_REMAP_Msk,
- AFIO_MAPR_CAN_REMAP_REMAP2);
- } else if (func == 4) {
- // I2C1 Alt
+ if (func == 1) {
+ // TIM2
+ if (gpio == GPIO('A', 15) || gpio == GPIO('B', 3))
+ stm32f1_alternative_remap(AFIO_MAPR_TIM2_REMAP_Msk,
+ AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1);
+ else if (gpio == GPIO('B', 10) || gpio == GPIO('B', 11))
+ stm32f1_alternative_remap(AFIO_MAPR_TIM2_REMAP_Msk,
+ AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2);
+ } else if (func == 2) {
+ // TIM3 and TIM4
+ if (gpio == GPIO('B', 4) || gpio == GPIO('B', 5))
+ stm32f1_alternative_remap(AFIO_MAPR_TIM3_REMAP_Msk,
+ AFIO_MAPR_TIM3_REMAP_PARTIALREMAP);
+ else if (gpio == GPIO('C', 6) || gpio == GPIO('C', 7)
+ || gpio == GPIO('C', 8) || gpio == GPIO('C', 9))
+ stm32f1_alternative_remap(AFIO_MAPR_TIM3_REMAP_Msk,
+ AFIO_MAPR_TIM3_REMAP_FULLREMAP);
+ else if (gpio == GPIO('D', 12) || gpio == GPIO('D', 13)
+ || gpio == GPIO('D', 14) || gpio == GPIO('D', 15))
+ stm32f1_alternative_remap(AFIO_MAPR_TIM4_REMAP_Msk,
+ AFIO_MAPR_TIM4_REMAP);
+ } else if (func == 4) {
+ // I2C
+ if (gpio == GPIO('B', 8) || gpio == GPIO('B', 9))
stm32f1_alternative_remap(AFIO_MAPR_I2C1_REMAP_Msk,
AFIO_MAPR_I2C1_REMAP);
- }
- } else if ((gpio == GPIO('A', 15)
- || gpio == GPIO('B', 3)) && (func == 1)) {
- // TIM2 CH1/2
- stm32f1_alternative_remap(AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Msk,
- AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1);
- } else if ((gpio == GPIO('B', 10)
- || gpio == GPIO('B', 11)) && (func == 1)) {
- // TIM2 CH3/4
- stm32f1_alternative_remap(AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Msk,
- AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2);
- } else if ((gpio == GPIO('B', 4)
- || gpio == GPIO('B', 5)) && (func == 2)) {
- // TIM3 partial remap
- stm32f1_alternative_remap(AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Msk,
- AFIO_MAPR_TIM3_REMAP_PARTIALREMAP);
- } else if ((gpio == GPIO('C', 6)
- || gpio == GPIO('C', 7)
- || gpio == GPIO('C', 8)
- || gpio == GPIO('C', 9)) && (func == 2)) {
- // TIM3 full remap
- stm32f1_alternative_remap(AFIO_MAPR_TIM3_REMAP_FULLREMAP_Msk,
- AFIO_MAPR_TIM3_REMAP_FULLREMAP);
- } else if ((gpio == GPIO('D', 8) || gpio == GPIO('D', 9)) && func == 7) {
- // USART3 remap
- stm32f1_alternative_remap(AFIO_MAPR_USART3_REMAP_FULLREMAP_Msk,
- AFIO_MAPR_USART3_REMAP_FULLREMAP);
- } else if ((gpio == GPIO('D', 12)
- || gpio == GPIO('D', 13)
- || gpio == GPIO('D', 14)
- || gpio == GPIO('D', 15)) && (func == 2)) {
- // TIM4
- stm32f1_alternative_remap(AFIO_MAPR_TIM4_REMAP_Msk,
- AFIO_MAPR_TIM4_REMAP);
+ } else if (func == 7) {
+ // USART
+ if (gpio == GPIO('D', 8) || gpio == GPIO('D', 9))
+ stm32f1_alternative_remap(AFIO_MAPR_USART3_REMAP_Msk,
+ AFIO_MAPR_USART3_REMAP_FULLREMAP);
+ } else if (func == 9) {
+ // CAN
+ if (gpio == GPIO('B', 8) || gpio == GPIO('B', 9))
+ stm32f1_alternative_remap(AFIO_MAPR_CAN_REMAP_Msk,
+ AFIO_MAPR_CAN_REMAP_REMAP2);
}
- // Add more as needed
}
-
-
// Handle USB reboot requests
void
usb_request_bootloader(void)