GNSS improvments:
- Introduce alive indicator; Status string will switch between white and grey with every message received from the module
- shorten visibility of "shutting down" string. a busy wait of 1 second was applied in the sleep prepare function. The time is now included in the time needed to prepare the module for low power operation
- make sure GPIO is properly initialized after deep sleep
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();+ −
}+ −