Resume UART com with gnss after sleep:
Some changes were needed to get the communication up and running again after the gnns modul was set into power mode. The config needs to be safed at shutdown and the receiver needs to be wake up using dummy bytes before real communication may be resumed
line source
///////////////////////////////////////////////////////////////////////////////+ −
/// -*- coding: UTF-8 -*-+ −
///+ −
/// \file Discovery/Src/stm32f4xx_hal_msp_hw2.c+ −
/// \brief This file provides code for the MSP Initialization and de-Initialization codes.+ −
/// \author Heinrichs Weikamp gmbh+ −
/// \date 2018+ −
///+ −
/// \details+ −
///+ −
/// $Id$+ −
///////////////////////////////////////////////////////////////////////////////+ −
/// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh+ −
///+ −
/// This program is free software: you can redistribute it and/or modify+ −
/// it under the terms of the GNU General Public License as published by+ −
/// the Free Software Foundation, either version 3 of the License, or+ −
/// (at your option) any later version.+ −
///+ −
/// This program is distributed in the hope that it will be useful,+ −
/// but WITHOUT ANY WARRANTY; without even the implied warranty of+ −
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ −
/// GNU General Public License for more details.+ −
///+ −
/// You should have received a copy of the GNU General Public License+ −
/// along with this program. If not, see <http://www.gnu.org/licenses/>.+ −
///////////////////////////////////////////////////////////////////////////////+ −
/// \par Copyright (c) 2014 STMicroelectronics+ −
///+ −
/// Redistribution and use in source and binary forms, with or without modification,+ −
/// are permitted provided that the following conditions are met:+ −
/// 1. Redistributions of source code must retain the above copyright notice,+ −
/// this list of conditions and the following disclaimer.+ −
/// 2. Redistributions in binary form must reproduce the above copyright notice,+ −
/// this list of conditions and the following disclaimer in the documentation+ −
/// and/or other materials provided with the distribution.+ −
/// 3. Neither the name of STMicroelectronics nor the names of its contributors+ −
/// may be used to endorse or promote products derived from this software+ −
/// without specific prior written permission.+ −
///+ −
/// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"+ −
/// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+ −
/// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE+ −
/// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE+ −
/// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+ −
/// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR+ −
/// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER+ −
/// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,+ −
/// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+ −
/// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ −
///////////////////////////////////////////////////////////////////////////////+ −
+ −
/* Includes ------------------------------------------------------------------*/+ −
#include "stm32f4xx_hal.h"+ −
#include "ostc.h"+ −
+ −
DMA_HandleTypeDef hdma_spi1_tx;+ −
+ −
DMA_HandleTypeDef hdma_spi1_rx;+ −
+ −
/**+ −
* Initializes the Global MSP.+ −
*/+ −
void HAL_MspInit(void)+ −
{+ −
/* USER CODE BEGIN MspInit 0 */+ −
/* USER CODE END MspInit 0 */+ −
+ −
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);+ −
+ −
/* System interrupt init*/+ −
/** SysTick_IRQn interrupt configuration+ −
*/+ −
HAL_NVIC_SetPriority(SysTick_IRQn, 1, 0);+ −
+ −
/* USER CODE BEGIN MspInit 1 */+ −
/* always set priority right */+ −
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);+ −
/* USER CODE END MspInit 1 */+ −
}+ −
+ −
void HAL_DMA2D_MspInit(DMA2D_HandleTypeDef* hdma2d)+ −
{+ −
+ −
if(hdma2d->Instance==DMA2D)+ −
{+ −
/* USER CODE BEGIN DMA2D_MspInit 0 */+ −
+ −
/* USER CODE END DMA2D_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__DMA2D_CLK_ENABLE();+ −
/* USER CODE BEGIN DMA2D_MspInit 1 */+ −
HAL_NVIC_SetPriority(DMA2D_IRQn, 1, 2);+ −
HAL_NVIC_EnableIRQ(DMA2D_IRQn);+ −
/* USER CODE END DMA2D_MspInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_DMA2D_MspDeInit(DMA2D_HandleTypeDef* hdma2d)+ −
{+ −
+ −
if(hdma2d->Instance==DMA2D)+ −
{+ −
/* USER CODE BEGIN DMA2D_MspDeInit 0 */+ −
+ −
/* USER CODE END DMA2D_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__DMA2D_CLK_DISABLE();+ −
/* USER CODE BEGIN DMA2D_MspDeInit 1 */+ −
__DMA2D_RELEASE_RESET();+ −
/* USER CODE END DMA2D_MspDeInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)+ −
{+ −
+ −
GPIO_InitTypeDef GPIO_InitStruct;+ −
if(hltdc->Instance==LTDC)+ −
{+ −
/* USER CODE BEGIN LTDC_MspInit 0 */+ −
__GPIOE_CLK_ENABLE();+ −
__GPIOF_CLK_ENABLE();+ −
__GPIOG_CLK_ENABLE();+ −
__GPIOH_CLK_ENABLE();+ −
__GPIOI_CLK_ENABLE();+ −
+ −
/* USER CODE END LTDC_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__LTDC_CLK_ENABLE();+ −
+ −
/**LTDC GPIO Configuration+ −
PE4 ------> LTDC_B0+ −
PE5 ------> LTDC_G0+ −
PE6 ------> LTDC_G1+ −
PI9 ------> LTDC_VSYNC+ −
PI10 ------> LTDC_HSYNC+ −
PF10 ------> LTDC_DE+ −
PH2 ------> LTDC_R0+ −
PH3 ------> LTDC_R1+ −
PH8 ------> LTDC_R2+ −
PH9 ------> LTDC_R3+ −
PH10 ------> LTDC_R4+ −
PH11 ------> LTDC_R5+ −
PH12 ------> LTDC_R6+ −
PG6 ------> LTDC_R7+ −
PG7 ------> LTDC_CLK+ −
PH13 ------> LTDC_G2+ −
PH14 ------> LTDC_G3+ −
PH15 ------> LTDC_G4+ −
PI0 ------> LTDC_G5+ −
PI1 ------> LTDC_G6+ −
PI2 ------> LTDC_G7+ −
PG10 ------> LTDC_B2+ −
PG11 ------> LTDC_B3+ −
PG12 ------> LTDC_B1+ −
PI4 ------> LTDC_B4+ −
PI5 ------> LTDC_B5+ −
PI6 ------> LTDC_B6+ −
PI7 ------> LTDC_B7+ −
*/+ −
GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;+ −
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_0|GPIO_PIN_1+ −
|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6+ −
|GPIO_PIN_7;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;+ −
HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_10;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;+ −
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_8|GPIO_PIN_9+ −
|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13+ −
|GPIO_PIN_14|GPIO_PIN_15;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;+ −
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_10|GPIO_PIN_11+ −
|GPIO_PIN_12;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;+ −
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);+ −
+ −
/* USER CODE BEGIN LTDC_MspInit 1 */+ −
+ −
/* USER CODE END LTDC_MspInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)+ −
{+ −
+ −
if(hltdc->Instance==LTDC)+ −
{+ −
/* USER CODE BEGIN LTDC_MspDeInit 0 */+ −
+ −
/* USER CODE END LTDC_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__LTDC_CLK_DISABLE();+ −
+ −
/**LTDC GPIO Configuration+ −
PE4 ------> LTDC_B0+ −
PE5 ------> LTDC_G0+ −
PE6 ------> LTDC_G1+ −
PI9 ------> LTDC_VSYNC+ −
PI10 ------> LTDC_HSYNC+ −
PF10 ------> LTDC_DE+ −
PH2 ------> LTDC_R0+ −
PH3 ------> LTDC_R1+ −
PH8 ------> LTDC_R2+ −
PH9 ------> LTDC_R3+ −
PH10 ------> LTDC_R4+ −
PH11 ------> LTDC_R5+ −
PH12 ------> LTDC_R6+ −
PG6 ------> LTDC_R7+ −
PG7 ------> LTDC_CLK+ −
PH13 ------> LTDC_G2+ −
PH14 ------> LTDC_G3+ −
PH15 ------> LTDC_G4+ −
PI0 ------> LTDC_G5+ −
PI1 ------> LTDC_G6+ −
PI2 ------> LTDC_G7+ −
PG10 ------> LTDC_B2+ −
PG11 ------> LTDC_B3+ −
PG12 ------> LTDC_B1+ −
PI4 ------> LTDC_B4+ −
PI5 ------> LTDC_B5+ −
PI6 ------> LTDC_B6+ −
PI7 ------> LTDC_B7+ −
*/+ −
HAL_GPIO_DeInit(GPIOE, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6);+ −
+ −
HAL_GPIO_DeInit(GPIOI, GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_0|GPIO_PIN_1+ −
|GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6+ −
|GPIO_PIN_7);+ −
+ −
HAL_GPIO_DeInit(GPIOF, GPIO_PIN_10);+ −
+ −
HAL_GPIO_DeInit(GPIOH, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_8|GPIO_PIN_9+ −
|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13+ −
|GPIO_PIN_14|GPIO_PIN_15);+ −
+ −
HAL_GPIO_DeInit(GPIOG, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_10|GPIO_PIN_11+ −
|GPIO_PIN_12);+ −
+ −
/* USER CODE BEGIN LTDC_MspDeInit 1 */+ −
__LTDC_RELEASE_RESET();+ −
+ −
/* USER CODE END LTDC_MspDeInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)+ −
{+ −
+ −
GPIO_InitTypeDef GPIO_InitStruct;+ −
if(hspi->Instance==SPI1)+ −
{+ −
/* USER CODE BEGIN SPI1_MspInit 0 */+ −
__GPIOA_CLK_ENABLE();+ −
__GPIOB_CLK_ENABLE();+ −
__DMA2_CLK_ENABLE();+ −
+ −
/* USER CODE END SPI1_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__SPI1_CLK_ENABLE();+ −
+ −
/**SPI1 GPIO Configuration+ −
alt: PA4 ------> SPI1_NSS, jetzt soft+ −
PA5 ------> SPI1_SCK+ −
alt: PA6 ------> SPI1_MISO+ −
neu: PB4 ------> SPI1_MISO+ −
PA7 ------> SPI1_MOSI+ −
*/+ −
// GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;+ −
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_7;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_FAST; /* Decision is based on errata which recommends FAST for GPIO at 90Mhz */+ −
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;+ −
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);+ −
GPIO_InitStruct.Pin = GPIO_PIN_4;+ −
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);+ −
+ −
/* Peripheral DMA init*/+ −
+ −
hdma_spi1_tx.Instance = DMA2_Stream3;+ −
hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;+ −
hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;+ −
hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;+ −
hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;+ −
hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;+ −
hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;+ −
hdma_spi1_tx.Init.Mode = DMA_NORMAL;+ −
hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;+ −
hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;+ −
hdma_spi1_tx.Init.MemBurst = DMA_MBURST_INC4;+ −
hdma_spi1_tx.Init.PeriphBurst = DMA_PBURST_INC4;+ −
HAL_DMA_Init(&hdma_spi1_tx);+ −
+ −
__HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);+ −
+ −
hdma_spi1_rx.Instance = DMA2_Stream0;+ −
hdma_spi1_rx.Init.Channel = DMA_CHANNEL_3;+ −
hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;+ −
hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;+ −
hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;+ −
hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;+ −
hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;+ −
hdma_spi1_rx.Init.Mode = DMA_NORMAL;+ −
hdma_spi1_rx.Init.Priority = DMA_PRIORITY_HIGH;+ −
hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;+ −
hdma_spi1_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL;+ −
+ −
hdma_spi1_rx.Init.MemBurst = DMA_MBURST_INC4;+ −
hdma_spi1_rx.Init.PeriphBurst = DMA_PBURST_INC4;+ −
HAL_DMA_Init(&hdma_spi1_rx);+ −
+ −
__HAL_LINKDMA(hspi, hdmarx, hdma_spi1_rx);+ −
+ −
/*##-4- Configure the NVIC for DMA #########################################*/+ −
/* NVIC configuration for DMA transfer complete interrupt (SPI1_TX) */+ −
HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 0, 1);+ −
HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);+ −
+ −
+ −
/* NVIC configuration for DMA transfer complete interrupt (SPI1_RX) */+ −
HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 0, 0);+ −
HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn);+ −
+ −
}+ −
else if(hspi->Instance==SPI2)+ −
{+ −
/* USER CODE BEGIN SPI2_MspInit 0 */+ −
__GPIOB_CLK_ENABLE();+ −
+ −
/* USER CODE END SPI2_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__SPI2_CLK_ENABLE();+ −
+ −
/**SPI2 GPIO Configuration+ −
PB13 ------> SPI2_SCK+ −
PB14 ------> SPI2_MISO+ −
PB15 ------> SPI2_MOSI+ −
*/+ −
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;+ −
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);+ −
+ −
/* USER CODE BEGIN SPI2_MspInit 1 */+ −
+ −
/* USER CODE END SPI2_MspInit 1 */+ −
}+ −
else if(hspi->Instance==SPI5)+ −
{+ −
/* USER CODE BEGIN SPI5_MspInit 0 */+ −
__GPIOF_CLK_ENABLE();+ −
+ −
/* USER CODE END SPI5_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__SPI5_CLK_ENABLE();+ −
+ −
/**SPI5 GPIO Configuration+ −
PF7 ------> SPI5_SCK+ −
PF8 ------> SPI5_MISO+ −
PF9 ------> SPI5_MOSI+ −
*/+ −
GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_FAST; /* Decision is based on errata which recommends FAST for GPIO at 90Mhz */+ −
GPIO_InitStruct.Alternate = GPIO_AF5_SPI5;+ −
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);+ −
+ −
/* USER CODE BEGIN SPI5_MspInit 1 */+ −
+ −
/* USER CODE END SPI5_MspInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)+ −
{+ −
+ −
if(hspi->Instance==SPI1)+ −
{+ −
/* USER CODE BEGIN SPI1_MspDeInit 0 */+ −
__SPI1_FORCE_RESET();+ −
__SPI1_RELEASE_RESET();+ −
+ −
/* USER CODE END SPI1_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__SPI1_CLK_DISABLE();+ −
+ −
/**SPI1 GPIO Configuration+ −
PA4 ------> SPI1_NSS+ −
PA5 ------> SPI1_SCK+ −
PA6 ------> SPI1_MISO+ −
PA7 ------> SPI1_MOSI+ −
*/+ −
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);+ −
+ −
/* Peripheral DMA DeInit*/+ −
HAL_DMA_DeInit(hspi->hdmatx);+ −
HAL_DMA_DeInit(hspi->hdmarx);+ −
/* USER CODE BEGIN SPI1_MspDeInit 1 */+ −
+ −
/* USER CODE END SPI1_MspDeInit 1 */+ −
}+ −
else if(hspi->Instance==SPI2)+ −
{+ −
/* USER CODE BEGIN SPI2_MspDeInit 0 */+ −
+ −
/* USER CODE END SPI2_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__SPI2_CLK_DISABLE();+ −
+ −
/**SPI2 GPIO Configuration+ −
PB13 ------> SPI2_SCK+ −
PB14 ------> SPI2_MISO+ −
PB15 ------> SPI2_MOSI+ −
*/+ −
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);+ −
+ −
/* USER CODE BEGIN SPI2_MspDeInit 1 */+ −
+ −
/* USER CODE END SPI2_MspDeInit 1 */+ −
}+ −
else if(hspi->Instance==SPI5)+ −
{+ −
/* USER CODE BEGIN SPI5_MspDeInit 0 */+ −
__SPI5_FORCE_RESET();+ −
__SPI5_RELEASE_RESET();+ −
+ −
/* USER CODE END SPI5_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__SPI5_CLK_DISABLE();+ −
+ −
/**SPI5 GPIO Configuration+ −
PF7 ------> SPI5_SCK+ −
PF8 ------> SPI5_MISO+ −
PF9 ------> SPI5_MOSI+ −
*/+ −
HAL_GPIO_DeInit(GPIOF, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9);+ −
+ −
/* USER CODE BEGIN SPI5_MspDeInit 1 */+ −
+ −
/* USER CODE END SPI5_MspDeInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef* htim_pwm)+ −
{+ −
GPIO_InitTypeDef GPIO_InitStruct;+ −
if(htim_pwm->Instance==TIM_BACKLIGHT)+ −
{+ −
TIM_BACKLIGHT_GPIO_ENABLE();+ −
TIM_BACKLIGHT_CLK_ENABLE();+ −
+ −
GPIO_InitStruct.Pin = TIM_BACKLIGHT_PIN;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;+ −
HAL_GPIO_Init(TIM_BACKLIGHT_GPIO_PORT, &GPIO_InitStruct);+ −
}+ −
+ −
}+ −
+ −
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)+ −
{+ −
if(htim_base->Instance==TIMx)+ −
{+ −
TIMx_CLK_ENABLE();+ −
+ −
HAL_NVIC_SetPriority(TIMx_IRQn, 2, 1);+ −
HAL_NVIC_EnableIRQ(TIMx_IRQn);+ −
}+ −
#ifdef DEMOMODE+ −
if(htim_base->Instance==TIM7)+ −
{+ −
__TIM7_CLK_ENABLE();+ −
+ −
HAL_NVIC_SetPriority(TIM7_IRQn, 2, 0);+ −
HAL_NVIC_EnableIRQ(TIM7_IRQn);+ −
}+ −
#endif+ −
}+ −
+ −
void HAL_TIM_PWM_MspDeInit(TIM_HandleTypeDef* htim_pwm)+ −
{+ −
+ −
if(htim_pwm->Instance==TIM2)+ −
{+ −
/* USER CODE BEGIN TIM2_MspDeInit 0 */+ −
+ −
/* USER CODE END TIM2_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__TIM2_CLK_DISABLE();+ −
+ −
/**TIM2 GPIO Configuration+ −
PA15 ------> TIM2_CH1+ −
*/+ −
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_15);+ −
+ −
/* USER CODE BEGIN TIM2_MspDeInit 1 */+ −
+ −
/* USER CODE END TIM2_MspDeInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)+ −
{+ −
+ −
if(htim_base->Instance==TIM3)+ −
{+ −
/* USER CODE BEGIN TIM3_MspDeInit 0 */+ −
+ −
/* USER CODE END TIM3_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__TIM3_CLK_DISABLE();+ −
+ −
/**TIM3 GPIO Configuration+ −
PC7 ------> TIM3_CH2+ −
*/+ −
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_7);+ −
+ −
/* USER CODE BEGIN TIM3_MspDeInit 1 */+ −
+ −
/* USER CODE END TIM3_MspDeInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_UART_MspInit(UART_HandleTypeDef* huart)+ −
{+ −
+ −
GPIO_InitTypeDef GPIO_InitStruct;+ −
if(huart->Instance==USART1)+ −
{+ −
/* USER CODE BEGIN USART1_MspInit 0 */+ −
__GPIOA_CLK_ENABLE();+ −
+ −
/* USER CODE END USART1_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__USART1_CLK_ENABLE();+ −
+ −
/**USART1 GPIO Configuration+ −
PA9 ------> USART1_TX+ −
PA10 ------> USART1_RX+ −
PA11 ------> USART1_CTS+ −
PA12 ------> USART1_RTS+ −
*/+ −
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_PULLUP;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;//GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;+ −
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);+ −
+ −
#ifdef USARTx_CTS_PIN /* config control flow pins */+ −
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);+ −
#endif+ −
+ −
HAL_NVIC_SetPriority(USART1_IRQn, 0, 1);+ −
HAL_NVIC_EnableIRQ(USART1_IRQn);+ −
}+ −
#ifdef USART_IR_HUD+ −
else if(huart->Instance==USART_IR_HUD) /* USART2 */+ −
{+ −
USART_IR_HUD_CLK_ENABLE();+ −
USART_IR_HUD_TX_GPIO_CLK_ENABLE();+ −
USART_IR_HUD_RX_GPIO_CLK_ENABLE();+ −
+ −
/**USART2 GPIO Configuration+ −
PD5 ------> USART2_TX+ −
PD6 ------> USART2_RX+ −
*/+ −
+ −
GPIO_InitStruct.Pin = USART_IR_HUD_TX_PIN;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_PULLUP;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = USART_IR_HUD_TX_AF;+ −
HAL_GPIO_Init(USART_IR_HUD_TX_GPIO_PORT, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = USART_IR_HUD_RX_PIN;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_PULLUP;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = USART_IR_HUD_RX_AF;+ −
HAL_GPIO_Init(USART_IR_HUD_RX_GPIO_PORT, &GPIO_InitStruct);+ −
+ −
HAL_NVIC_SetPriority(USART_IR_HUD_IRQn, 0, 1);+ −
HAL_NVIC_EnableIRQ(USART_IR_HUD_IRQn);+ −
}+ −
#endif+ −
else if(huart->Instance==USART3)+ −
{+ −
/* USER CODE BEGIN USART3_MspInit 0 */+ −
+ −
/* USER CODE END USART3_MspInit 0 */+ −
/* Peripheral clock enable */+ −
__USART3_CLK_ENABLE();+ −
+ −
/**USART3 GPIO Configuration+ −
PC10 ------> USART3_TX+ −
PC11 ------> USART3_RX+ −
*/+ −
GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_PULLUP;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;+ −
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;+ −
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);+ −
+ −
/* USER CODE BEGIN USART3_MspInit 1 */+ −
+ −
/* USER CODE END USART3_MspInit 1 */+ −
}+ −
+ −
}+ −
+ −
void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)+ −
{+ −
+ −
if(huart->Instance==USART1)+ −
{+ −
/* USER CODE BEGIN USART1_MspDeInit 0 */+ −
+ −
/* USER CODE END USART1_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
HAL_NVIC_DisableIRQ(USART1_IRQn);+ −
__USART1_CLK_DISABLE();+ −
+ −
/**USART1 GPIO Configuration+ −
PA9 ------> USART1_TX+ −
PA10 ------> USART1_RX+ −
*/+ −
#ifdef USARTx_CTS_PIN+ −
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12);+ −
#else+ −
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);+ −
#endif+ −
+ −
/* USER CODE BEGIN USART1_MspDeInit 1 */+ −
+ −
/* USER CODE END USART1_MspDeInit 1 */+ −
}+ −
else if(huart->Instance==USART2)+ −
{+ −
/* USER CODE BEGIN USART2_MspDeInit 0 */+ −
+ −
/* USER CODE END USART2_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__USART2_CLK_DISABLE();+ −
+ −
/**USART2 GPIO Configuration+ −
PD5 ------> USART2_TX+ −
PD6 ------> USART2_RX+ −
*/+ −
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5|GPIO_PIN_6);+ −
+ −
/* USER CODE BEGIN USART2_MspDeInit 1 */+ −
+ −
/* USER CODE END USART2_MspDeInit 1 */+ −
}+ −
else if(huart->Instance==USART3)+ −
{+ −
/* USER CODE BEGIN USART3_MspDeInit 0 */+ −
+ −
/* USER CODE END USART3_MspDeInit 0 */+ −
/* Peripheral clock disable */+ −
__USART3_CLK_DISABLE();+ −
+ −
/**USART3 GPIO Configuration+ −
PC10 ------> USART3_TX+ −
PC11 ------> USART3_RX+ −
*/+ −
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11);+ −
+ −
/* USER CODE BEGIN USART3_MspDeInit 1 */+ −
+ −
/* USER CODE END USART3_MspDeInit 1 */+ −
}+ −
+ −
}+ −
+ −
static int FMC_Initialized = 0;+ −
+ −
static void HAL_FMC_MspInit(void){+ −
GPIO_InitTypeDef GPIO_InitStruct;+ −
if (FMC_Initialized) {+ −
return;+ −
}+ −
FMC_Initialized = 1;+ −
/* Peripheral clock enable */+ −
__GPIOC_CLK_ENABLE();+ −
__GPIOD_CLK_ENABLE();+ −
__GPIOE_CLK_ENABLE();+ −
__GPIOF_CLK_ENABLE();+ −
__GPIOG_CLK_ENABLE();+ −
__GPIOH_CLK_ENABLE();+ −
+ −
__FMC_CLK_ENABLE();+ −
+ −
/** FMC GPIO Configuration+ −
PF0 ------> FMC_A0+ −
PF1 ------> FMC_A1+ −
PF2 ------> FMC_A2+ −
PF3 ------> FMC_A3+ −
PF4 ------> FMC_A4+ −
PF5 ------> FMC_A5+ −
PC0 ------> FMC_SDNWE+ −
PF11 ------> FMC_SDNRAS+ −
PF12 ------> FMC_A6+ −
PF13 ------> FMC_A7+ −
PF14 ------> FMC_A8+ −
PF15 ------> FMC_A9+ −
PG0 ------> FMC_A10+ −
PG1 ------> FMC_A11+ −
PE7 ------> FMC_D4+ −
PE8 ------> FMC_D5+ −
PE9 ------> FMC_D6+ −
PE10 ------> FMC_D7+ −
PE11 ------> FMC_D8+ −
PE12 ------> FMC_D9+ −
PE13 ------> FMC_D10+ −
PE14 ------> FMC_D11+ −
PE15 ------> FMC_D12+ −
PH6 ------> FMC_SDNE1 neu+ −
PH7 ------> FMC_SDCKE1 neu+ −
PD8 ------> FMC_D13+ −
PD9 ------> FMC_D14+ −
PD10 ------> FMC_D15+ −
PD14 ------> FMC_D0+ −
PD15 ------> FMC_D1+ −
PG2 ------> FMC_A12+ −
PG4 ------> FMC_BA0+ −
PG5 ------> FMC_BA1+ −
PG8 ------> FMC_SDCLK+ −
PD0 ------> FMC_D2+ −
PD1 ------> FMC_D3+ −
PG15 ------> FMC_SDNCAS+ −
PE0 ------> FMC_NBL0+ −
PE1 ------> FMC_NBL1+ −
*/+ −
+ −
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;+ −
GPIO_InitStruct.Pull = GPIO_NOPULL;+ −
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;+ −
GPIO_InitStruct.Alternate = GPIO_AF12_FMC;+ −
+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_0;+ −
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14+ −
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;+ −
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10+ −
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14+ −
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1;+ −
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3+ −
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_11|GPIO_PIN_12+ −
|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;+ −
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4+ −
|GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_15;+ −
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);+ −
+ −
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;+ −
HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);+ −
+ −
+ −
}+ −
+ −
void HAL_SDRAM_MspInit(SDRAM_HandleTypeDef* hsdram){+ −
HAL_FMC_MspInit();+ −
}+ −
+ −
static int FMC_DeInitialized = 0;+ −
+ −
static void HAL_FMC_MspDeInit(void){+ −
if (FMC_DeInitialized) {+ −
return;+ −
}+ −
FMC_DeInitialized = 1;+ −
/* Peripheral clock enable */+ −
__FMC_CLK_DISABLE();+ −
+ −
/** FMC GPIO Configuration+ −
PF0 ------> FMC_A0+ −
PF1 ------> FMC_A1+ −
PF2 ------> FMC_A2+ −
PF3 ------> FMC_A3+ −
PF4 ------> FMC_A4+ −
PF5 ------> FMC_A5+ −
PC0 ------> FMC_SDNWE+ −
PF11 ------> FMC_SDNRAS+ −
PF12 ------> FMC_A6+ −
PF13 ------> FMC_A7+ −
PF14 ------> FMC_A8+ −
PF15 ------> FMC_A9+ −
PG0 ------> FMC_A10+ −
PG1 ------> FMC_A11+ −
PE7 ------> FMC_D4+ −
PE8 ------> FMC_D5+ −
PE9 ------> FMC_D6+ −
PE10 ------> FMC_D7+ −
PE11 ------> FMC_D8+ −
PE12 ------> FMC_D9+ −
PE13 ------> FMC_D10+ −
PE14 ------> FMC_D11+ −
PE15 ------> FMC_D12+ −
PH6 ------> FMC_SDNE1+ −
PH7 ------> FMC_SDCKE1+ −
PD8 ------> FMC_D13+ −
PD9 ------> FMC_D14+ −
PD10 ------> FMC_D15+ −
PD14 ------> FMC_D0+ −
PD15 ------> FMC_D1+ −
PG2 ------> FMC_A12+ −
PG4 ------> FMC_BA0+ −
PG5 ------> FMC_BA1+ −
PG8 ------> FMC_SDCLK+ −
PD0 ------> FMC_D2+ −
PD1 ------> FMC_D3+ −
PG15 ------> FMC_SDNCAS+ −
PE0 ------> FMC_NBL0+ −
PE1 ------> FMC_NBL1+ −
*/+ −
HAL_GPIO_DeInit(GPIOF, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3+ −
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_11|GPIO_PIN_12+ −
|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);+ −
+ −
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0);+ −
+ −
HAL_GPIO_DeInit(GPIOG, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_4+ −
|GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_15);+ −
+ −
HAL_GPIO_DeInit(GPIOE, GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10+ −
|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14+ −
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);+ −
+ −
HAL_GPIO_DeInit(GPIOH, GPIO_PIN_6|GPIO_PIN_7);+ −
+ −
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_14+ −
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1);+ −
+ −
}+ −
+ −
void HAL_SDRAM_MspDeInit(SDRAM_HandleTypeDef* hsdram){+ −
HAL_FMC_MspDeInit();+ −
}+ −