summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2021-12-14 00:00:35 +1100
committerDamien George <damien@micropython.org>2021-12-14 10:48:01 +1100
commit88ac5a3116d97f4b18f10b9a5855f008cffff6db (patch)
tree4db369b880fee8c90a2754a986e2b0b84eec828b
parenta0f5b3148a5c276aa1abf7b77b0964eec80cda16 (diff)
stm32: Update L4 code to build with latest stm32lib and L4 HAL 1.17.0.
Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--ports/stm32/Makefile7
-rw-r--r--ports/stm32/adc.h4
-rw-r--r--ports/stm32/boards/stm32l4xx_hal_conf_base.h9
-rw-r--r--ports/stm32/machine_adc.c4
-rw-r--r--ports/stm32/mphalport.h8
-rw-r--r--ports/stm32/stm32_it.c4
6 files changed, 27 insertions, 9 deletions
diff --git a/ports/stm32/Makefile b/ports/stm32/Makefile
index c3b281650..c5f159102 100644
--- a/ports/stm32/Makefile
+++ b/ports/stm32/Makefile
@@ -432,8 +432,13 @@ endif
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),STM32H743xx STM32H750xx STM32H7A3xx STM32H7A3xxQ STM32H7B3xx STM32H7B3xxQ))
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_, hal_fdcan.c)
else
-ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 f4 f7 h7 l4))
+ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 f4 f7 h7))
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_, hal_can.c)
+else
+ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),l4))
+HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/Legacy/stm32$(MCU_SERIES)xx_, hal_can.c)
+$(BUILD)/$(HAL_DIR)/Src/Legacy/stm32$(MCU_SERIES)xx_hal_can.o: CFLAGS += -Wno-error=cpp
+endif
endif
endif
diff --git a/ports/stm32/adc.h b/ports/stm32/adc.h
index 5821eb9d6..9101b9db8 100644
--- a/ports/stm32/adc.h
+++ b/ports/stm32/adc.h
@@ -44,7 +44,7 @@ static inline void adc_deselect_vbat(ADC_TypeDef *adc, uint32_t channel) {
#if defined(STM32F0) || defined(STM32WB)
adc_common = ADC1_COMMON;
- #elif defined(STM32F4) || defined(STM32L4)
+ #elif defined(STM32F4)
adc_common = ADC_COMMON_REGISTER(0);
#elif defined(STM32F7)
adc_common = ADC123_COMMON;
@@ -52,6 +52,8 @@ static inline void adc_deselect_vbat(ADC_TypeDef *adc, uint32_t channel) {
adc_common = ADC12_COMMON;
#elif defined(STM32H7)
adc_common = adc == ADC3 ? ADC3_COMMON : ADC12_COMMON;
+ #elif defined(STM32L4)
+ adc_common = __LL_ADC_COMMON_INSTANCE(0);
#endif
adc_common->CCR &= ~LL_ADC_PATH_INTERNAL_VBAT;
diff --git a/ports/stm32/boards/stm32l4xx_hal_conf_base.h b/ports/stm32/boards/stm32l4xx_hal_conf_base.h
index 4f3a78d50..ce35dee28 100644
--- a/ports/stm32/boards/stm32l4xx_hal_conf_base.h
+++ b/ports/stm32/boards/stm32l4xx_hal_conf_base.h
@@ -26,10 +26,13 @@
#ifndef MICROPY_INCLUDED_STM32L4XX_HAL_CONF_BASE_H
#define MICROPY_INCLUDED_STM32L4XX_HAL_CONF_BASE_H
+// Needs to be defined before ll_usb.h is included
+#define HAL_PCD_MODULE_ENABLED
+
// Include various HAL modules for convenience
#include "stm32l4xx_hal_dma.h"
#include "stm32l4xx_hal_adc.h"
-#include "stm32l4xx_hal_can.h"
+#include "Legacy/stm32l4xx_hal_can_legacy.h"
#include "stm32l4xx_hal_cortex.h"
#include "stm32l4xx_hal_crc.h"
#include "stm32l4xx_hal_dac.h"
@@ -54,11 +57,12 @@
#include "stm32l4xx_ll_lpuart.h"
#include "stm32l4xx_ll_rtc.h"
#include "stm32l4xx_ll_usart.h"
+#include "stm32l4xx_ll_usb.h"
// Enable various HAL modules
#define HAL_MODULE_ENABLED
#define HAL_ADC_MODULE_ENABLED
-#define HAL_CAN_MODULE_ENABLED
+#define HAL_CAN_LEGACY_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HAL_CRC_MODULE_ENABLED
#define HAL_DAC_MODULE_ENABLED
@@ -70,7 +74,6 @@
#define HAL_HCD_MODULE_ENABLED
#define HAL_I2C_MODULE_ENABLED
#define HAL_IWDG_MODULE_ENABLED
-#define HAL_PCD_MODULE_ENABLED
#define HAL_PWR_MODULE_ENABLED
#define HAL_RCC_MODULE_ENABLED
#define HAL_RTC_MODULE_ENABLED
diff --git a/ports/stm32/machine_adc.c b/ports/stm32/machine_adc.c
index a114a9ad1..8480bff53 100644
--- a/ports/stm32/machine_adc.c
+++ b/ports/stm32/machine_adc.c
@@ -34,10 +34,12 @@
#define ADC_V2 (0)
#endif
-#if defined(STM32F4) || defined(STM32L4)
+#if defined(STM32F4)
#define ADCx_COMMON ADC_COMMON_REGISTER(0)
#elif defined(STM32F7)
#define ADCx_COMMON ADC123_COMMON
+#elif defined(STM32L4)
+#define ADCx_COMMON __LL_ADC_COMMON_INSTANCE(0)
#endif
#if defined(STM32F0) || defined(STM32L0)
diff --git a/ports/stm32/mphalport.h b/ports/stm32/mphalport.h
index 450e7098a..6cfa9b927 100644
--- a/ports/stm32/mphalport.h
+++ b/ports/stm32/mphalport.h
@@ -2,21 +2,25 @@
#include STM32_HAL_H
#include "pin.h"
-// F0-1.9.0+F4-1.16.0+F7-1.7.0+H7-1.6.0+L0-1.11.2+L4-1.8.1+WB-1.10.0
+// F0-1.9.0+F4-1.16.0+F7-1.7.0+G4-1.3.0+H7-1.6.0+L0-1.11.2+L4-1.17.0+WB-1.10.0+WL-1.1.0
#if defined(STM32F0)
#define MICROPY_PLATFORM_VERSION "HAL1.9.0"
#elif defined(STM32F4)
#define MICROPY_PLATFORM_VERSION "HAL1.16.0"
#elif defined(STM32F7)
#define MICROPY_PLATFORM_VERSION "HAL1.7.0"
+#elif defined(STM32G4)
+#define MICROPY_PLATFORM_VERSION "HAL1.3.0"
#elif defined(STM32H7)
#define MICROPY_PLATFORM_VERSION "HAL1.6.0"
#elif defined(STM32L0)
#define MICROPY_PLATFORM_VERSION "HAL1.11.2"
#elif defined(STM32L4)
-#define MICROPY_PLATFORM_VERSION "HAL1.8.1"
+#define MICROPY_PLATFORM_VERSION "HAL1.17.0"
#elif defined(STM32WB)
#define MICROPY_PLATFORM_VERSION "HAL1.10.0"
+#elif defined(STM32WL)
+#define MICROPY_PLATFORM_VERSION "HAL1.1.0"
#endif
extern const unsigned char mp_hal_status_to_errno_table[4];
diff --git a/ports/stm32/stm32_it.c b/ports/stm32/stm32_it.c
index ed97c4fe0..fe9b60622 100644
--- a/ports/stm32/stm32_it.c
+++ b/ports/stm32/stm32_it.c
@@ -395,7 +395,9 @@ void OTG_FS_WKUP_IRQHandler(void) {
OTG_CMD_WKUP_Handler(&pcd_fs_handle);
- #if !defined(STM32H7)
+ #if defined(STM32L4)
+ EXTI->PR1 = USB_OTG_FS_WAKEUP_EXTI_LINE;
+ #elif !defined(STM32H7)
/* Clear EXTI pending Bit*/
__HAL_USB_FS_EXTI_CLEAR_FLAG();
#endif