diff --git a/radio/src/boards/generic_stm32/trainer_ports.cpp b/radio/src/boards/generic_stm32/trainer_ports.cpp index 7b8dc6476..8853fd505 100644 --- a/radio/src/boards/generic_stm32/trainer_ports.cpp +++ b/radio/src/boards/generic_stm32/trainer_ports.cpp @@ -112,6 +112,7 @@ bool is_trainer_dsc_connected() void trainer_init_module_cppm() { +#if defined(HARDWARE_EXTERNAL_MODULE) auto port = modulePortFind(EXTERNAL_MODULE, ETX_MOD_TYPE_TIMER, ETX_MOD_PORT_TIMER, ETX_Pol_Normal, ETX_MOD_DIR_RX); @@ -122,12 +123,15 @@ void trainer_init_module_cppm() modulePortSetPower(EXTERNAL_MODULE,true); trainer_init_capture(tim); +#endif } void trainer_stop_module_cppm() { +#if defined(HARDWARE_EXTERNAL_MODULE) trainer_stop(); modulePortSetPower(EXTERNAL_MODULE,false); +#endif } #if defined(TRAINER_TIMER_IRQHandler) diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index bbead1cc6..127d03b48 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -969,7 +969,7 @@ int cliSet(const char **argv) return -1; } } -#if !defined(SOFTWARE_VOLUME) +#if !defined(SOFTWARE_VOLUME) && defined(AUDIO) else if (!strcmp(argv[1], "volume")) { int level = 0; if (toInt(argv, 2, &level) > 0) { diff --git a/radio/src/gui/colorlcd/themes/etx_lv_theme.h b/radio/src/gui/colorlcd/themes/etx_lv_theme.h index e3d27f9d7..fa3fb3e78 100644 --- a/radio/src/gui/colorlcd/themes/etx_lv_theme.h +++ b/radio/src/gui/colorlcd/themes/etx_lv_theme.h @@ -44,6 +44,13 @@ enum PaddingSize { // Macros for setting up layout values // LAYOUT_VAL - 2 values - landscape, portrait +#if !defined(LANDSCAPE_LCD) +# error "LANDSCAPE_LCD must be defined" +#endif + +#if !defined(PORTRAIT_LCD) +# error "PORTRAIT_LCD must be defined" +#endif #if LANDSCAPE_LCD #define LAYOUT_VAL(name, landscape, portrait) \ diff --git a/radio/src/targets/common/arm/stm32/diskio_sdio.cpp b/radio/src/targets/common/arm/stm32/diskio_sdio.cpp index 02d632164..e6f1b25d9 100644 --- a/radio/src/targets/common/arm/stm32/diskio_sdio.cpp +++ b/radio/src/targets/common/arm/stm32/diskio_sdio.cpp @@ -241,7 +241,7 @@ static DSTATUS sdio_initialize(BYTE lun) sdio.Init.ClockEdge = SD_SDIO_CLOCK_EDGE_RISING; sdio.Init.ClockPowerSave = SD_SDIO_CLOCK_POWER_SAVE_DISABLE; sdio.Init.BusWide = SD_SDIO_BUS_WIDE_1B; - sdio.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE; + sdio.Init.HardwareFlowControl = SD_SDIO_HARDWARE_FLOW_CONTROL_DISABLE; #if ( USE_SD_TRANSCEIVER > 0U ) sdio.Init.TranceiverPresent = SDMMC_TRANSCEIVER_PRESENT; #endif diff --git a/radio/src/targets/common/arm/stm32/rtc_driver.cpp b/radio/src/targets/common/arm/stm32/rtc_driver.cpp index 51494b6b9..9a7dc2381 100644 --- a/radio/src/targets/common/arm/stm32/rtc_driver.cpp +++ b/radio/src/targets/common/arm/stm32/rtc_driver.cpp @@ -60,7 +60,13 @@ void rtcGetTime(struct gtm * t) void rtcInit() { rtc.Instance = RTC; + +#if !defined(STM32H7) && !defined(STM32H7RS) + // Power management peripheral is active by default at startup level in + // STM32h7xx lines. __HAL_RCC_PWR_CLK_ENABLE(); +#endif + HAL_PWR_EnableBkUpAccess(); // Enable LSE Oscillator diff --git a/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp b/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp index e1abf53c7..315778e55 100644 --- a/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_usart_driver.cpp @@ -399,13 +399,20 @@ void stm32_usart_send_buffer(const stm32_usart_t* usart, const uint8_t * data, u LL_DMA_StructInit(&dmaInit); #if !defined(STM32H7RS) + +#if defined(STM32H7) + dmaInit.PeriphRequest = usart->txDMA_Channel; +#else dmaInit.Channel = usart->txDMA_Channel; +#endif + #if defined(LL_USART_DMA_REG_DATA_RECEIVE) dmaInit.PeriphOrM2MSrcAddress = LL_USART_DMA_GetRegAddr(usart->USARTx, LL_USART_DMA_REG_DATA_RECEIVE); #else dmaInit.PeriphOrM2MSrcAddress = LL_USART_DMA_GetRegAddr(usart->USARTx); #endif + dmaInit.Direction = LL_DMA_DIRECTION_MEMORY_TO_PERIPH; dmaInit.MemoryOrM2MDstAddress = (uint32_t)data; dmaInit.MemoryOrM2MDstIncMode = LL_DMA_MEMORY_INCREMENT; @@ -418,7 +425,7 @@ void stm32_usart_send_buffer(const stm32_usart_t* usart, const uint8_t * data, u LL_DMA_EnableIT_TC(usart->txDMA, usart->txDMA_Stream); } LL_DMA_EnableStream(usart->txDMA, usart->txDMA_Stream); -#endif +#endif // !STM32H7RS return; } else { diff --git a/radio/src/targets/common/arm/stm32/usb_driver.cpp b/radio/src/targets/common/arm/stm32/usb_driver.cpp index a369328d2..5e7461a40 100644 --- a/radio/src/targets/common/arm/stm32/usb_driver.cpp +++ b/radio/src/targets/common/arm/stm32/usb_driver.cpp @@ -101,9 +101,22 @@ void usbInit() #if defined(USB_GPIO_VBUS) gpio_init(USB_GPIO_VBUS, GPIO_IN, GPIO_PIN_SPEED_LOW); #endif - + +#if defined(LL_APB2_GRP1_PERIPH_SYSCFG) LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SYSCFG); +#elif defined(LL_APB4_GRP1_PERIPH_SYSCFG) + LL_APB4_GRP1_EnableClock(LL_APB4_GRP1_PERIPH_SYSCFG); +#else + #error "Unable to enable SYSCFG peripheral clock" +#endif + +#if defined(LL_AHB2_GRP1_PERIPH_OTGFS) LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_OTGFS); +#elif defined(LL_AHB1_GRP1_PERIPH_USB2OTGHS) + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_USB2OTGHS); +#else + #error "Unable to enable USB peripheral clock" +#endif usbDriverStarted = false; } diff --git a/radio/src/targets/common/arm/stm32/usbd_storage_msd.cpp b/radio/src/targets/common/arm/stm32/usbd_storage_msd.cpp index 390335dc7..b31ebe2fb 100644 --- a/radio/src/targets/common/arm/stm32/usbd_storage_msd.cpp +++ b/radio/src/targets/common/arm/stm32/usbd_storage_msd.cpp @@ -136,14 +136,7 @@ USBD_StorageTypeDef USBD_Storage_Interface_fops_FS = int8_t STORAGE_Init_FS(uint8_t lun) { - NVIC_SetPriority(SDIO_IRQn, 0); - NVIC_EnableIRQ(SDIO_IRQn); - -/* TODO if no SD ... if( SD_Init() != 0) - { - return (-1); - } -*/ + // TODO: call generic storage init return (USBD_OK); }