enable SPI RX autosusp

might prevent overruns?
This commit is contained in:
Kilian Bracher 2025-05-27 22:48:39 +02:00
parent 861d9c9bd3
commit 4a8abdf807
5 changed files with 1559 additions and 1512 deletions

File diff suppressed because it is too large Load Diff

View File

@ -79,19 +79,19 @@ void HAL_MspInit(void)
static uint32_t HAL_RCC_ADC12_CLK_ENABLED=0; static uint32_t HAL_RCC_ADC12_CLK_ENABLED=0;
/** /**
* @brief ADC MSP Initialization * @brief ADC MSP Initialization
* This function configures the hardware resources used in this example * This function configures the hardware resources used in this example
* @param hadc: ADC handle pointer * @param hadc: ADC handle pointer
* @retval None * @retval None
*/ */
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc) void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
if(hadc->Instance==ADC1) if(hadc->Instance==ADC1)
{ {
/* USER CODE BEGIN ADC1_MspInit 0 */ /* USER CODE BEGIN ADC1_MspInit 0 */
/* USER CODE END ADC1_MspInit 0 */ /* USER CODE END ADC1_MspInit 0 */
/* Peripheral clock enable */ /* Peripheral clock enable */
HAL_RCC_ADC12_CLK_ENABLED++; HAL_RCC_ADC12_CLK_ENABLED++;
if(HAL_RCC_ADC12_CLK_ENABLED==1){ if(HAL_RCC_ADC12_CLK_ENABLED==1){
@ -107,15 +107,15 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(LV_I_measure_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(LV_I_measure_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN ADC1_MspInit 1 */ /* USER CODE BEGIN ADC1_MspInit 1 */
/* USER CODE END ADC1_MspInit 1 */ /* USER CODE END ADC1_MspInit 1 */
} }
else if(hadc->Instance==ADC2) else if(hadc->Instance==ADC2)
{ {
/* USER CODE BEGIN ADC2_MspInit 0 */ /* USER CODE BEGIN ADC2_MspInit 0 */
/* USER CODE END ADC2_MspInit 0 */ /* USER CODE END ADC2_MspInit 0 */
/* Peripheral clock enable */ /* Peripheral clock enable */
HAL_RCC_ADC12_CLK_ENABLED++; HAL_RCC_ADC12_CLK_ENABLED++;
if(HAL_RCC_ADC12_CLK_ENABLED==1){ if(HAL_RCC_ADC12_CLK_ENABLED==1){
@ -133,26 +133,26 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/* USER CODE BEGIN ADC2_MspInit 1 */ /* USER CODE BEGIN ADC2_MspInit 1 */
/* USER CODE END ADC2_MspInit 1 */ /* USER CODE END ADC2_MspInit 1 */
} }
} }
/** /**
* @brief ADC MSP De-Initialization * @brief ADC MSP De-Initialization
* This function freeze the hardware resources used in this example * This function freeze the hardware resources used in this example
* @param hadc: ADC handle pointer * @param hadc: ADC handle pointer
* @retval None * @retval None
*/ */
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc) void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
{ {
if(hadc->Instance==ADC1) if(hadc->Instance==ADC1)
{ {
/* USER CODE BEGIN ADC1_MspDeInit 0 */ /* USER CODE BEGIN ADC1_MspDeInit 0 */
/* USER CODE END ADC1_MspDeInit 0 */ /* USER CODE END ADC1_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
HAL_RCC_ADC12_CLK_ENABLED--; HAL_RCC_ADC12_CLK_ENABLED--;
if(HAL_RCC_ADC12_CLK_ENABLED==0){ if(HAL_RCC_ADC12_CLK_ENABLED==0){
@ -164,15 +164,15 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
*/ */
HAL_GPIO_DeInit(LV_I_measure_GPIO_Port, LV_I_measure_Pin); HAL_GPIO_DeInit(LV_I_measure_GPIO_Port, LV_I_measure_Pin);
/* USER CODE BEGIN ADC1_MspDeInit 1 */ /* USER CODE BEGIN ADC1_MspDeInit 1 */
/* USER CODE END ADC1_MspDeInit 1 */ /* USER CODE END ADC1_MspDeInit 1 */
} }
else if(hadc->Instance==ADC2) else if(hadc->Instance==ADC2)
{ {
/* USER CODE BEGIN ADC2_MspDeInit 0 */ /* USER CODE BEGIN ADC2_MspDeInit 0 */
/* USER CODE END ADC2_MspDeInit 0 */ /* USER CODE END ADC2_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
HAL_RCC_ADC12_CLK_ENABLED--; HAL_RCC_ADC12_CLK_ENABLED--;
if(HAL_RCC_ADC12_CLK_ENABLED==0){ if(HAL_RCC_ADC12_CLK_ENABLED==0){
@ -186,28 +186,28 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
*/ */
HAL_GPIO_DeInit(GPIOC, LV_I_measure_Pin|TEMP_TSDCDC_Pin); HAL_GPIO_DeInit(GPIOC, LV_I_measure_Pin|TEMP_TSDCDC_Pin);
/* USER CODE BEGIN ADC2_MspDeInit 1 */ /* USER CODE BEGIN ADC2_MspDeInit 1 */
/* USER CODE END ADC2_MspDeInit 1 */ /* USER CODE END ADC2_MspDeInit 1 */
} }
} }
/** /**
* @brief FDCAN MSP Initialization * @brief FDCAN MSP Initialization
* This function configures the hardware resources used in this example * This function configures the hardware resources used in this example
* @param hfdcan: FDCAN handle pointer * @param hfdcan: FDCAN handle pointer
* @retval None * @retval None
*/ */
void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan) void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
if(hfdcan->Instance==FDCAN1) if(hfdcan->Instance==FDCAN1)
{ {
/* USER CODE BEGIN FDCAN1_MspInit 0 */ /* USER CODE BEGIN FDCAN1_MspInit 0 */
/* USER CODE END FDCAN1_MspInit 0 */ /* USER CODE END FDCAN1_MspInit 0 */
/** Initializes the peripherals clock /** Initializes the peripherals clock
*/ */
@ -219,7 +219,7 @@ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan)
PeriphClkInitStruct.PLL2.PLL2R = 2; PeriphClkInitStruct.PLL2.PLL2R = 2;
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3; PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3;
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE;
PeriphClkInitStruct.PLL2.PLL2FRACN = 0.0; PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL2; PeriphClkInitStruct.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL2;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{ {
@ -244,27 +244,27 @@ void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* hfdcan)
/* FDCAN1 interrupt Init */ /* FDCAN1 interrupt Init */
HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn, 0, 0); HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn); HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn);
/* USER CODE BEGIN FDCAN1_MspInit 1 */ /* USER CODE BEGIN FDCAN1_MspInit 1 */
/* USER CODE END FDCAN1_MspInit 1 */ /* USER CODE END FDCAN1_MspInit 1 */
} }
} }
/** /**
* @brief FDCAN MSP De-Initialization * @brief FDCAN MSP De-Initialization
* This function freeze the hardware resources used in this example * This function freeze the hardware resources used in this example
* @param hfdcan: FDCAN handle pointer * @param hfdcan: FDCAN handle pointer
* @retval None * @retval None
*/ */
void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* hfdcan) void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* hfdcan)
{ {
if(hfdcan->Instance==FDCAN1) if(hfdcan->Instance==FDCAN1)
{ {
/* USER CODE BEGIN FDCAN1_MspDeInit 0 */ /* USER CODE BEGIN FDCAN1_MspDeInit 0 */
/* USER CODE END FDCAN1_MspDeInit 0 */ /* USER CODE END FDCAN1_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
__HAL_RCC_FDCAN_CLK_DISABLE(); __HAL_RCC_FDCAN_CLK_DISABLE();
@ -276,28 +276,28 @@ void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* hfdcan)
/* FDCAN1 interrupt DeInit */ /* FDCAN1 interrupt DeInit */
HAL_NVIC_DisableIRQ(FDCAN1_IT0_IRQn); HAL_NVIC_DisableIRQ(FDCAN1_IT0_IRQn);
/* USER CODE BEGIN FDCAN1_MspDeInit 1 */ /* USER CODE BEGIN FDCAN1_MspDeInit 1 */
/* USER CODE END FDCAN1_MspDeInit 1 */ /* USER CODE END FDCAN1_MspDeInit 1 */
} }
} }
/** /**
* @brief SPI MSP Initialization * @brief SPI MSP Initialization
* This function configures the hardware resources used in this example * This function configures the hardware resources used in this example
* @param hspi: SPI handle pointer * @param hspi: SPI handle pointer
* @retval None * @retval None
*/ */
void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
if(hspi->Instance==SPI1) if(hspi->Instance==SPI1)
{ {
/* USER CODE BEGIN SPI1_MspInit 0 */ /* USER CODE BEGIN SPI1_MspInit 0 */
/* USER CODE END SPI1_MspInit 0 */ /* USER CODE END SPI1_MspInit 0 */
/** Initializes the peripherals clock /** Initializes the peripherals clock
*/ */
@ -333,15 +333,15 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* USER CODE BEGIN SPI1_MspInit 1 */ /* USER CODE BEGIN SPI1_MspInit 1 */
/* USER CODE END SPI1_MspInit 1 */ /* USER CODE END SPI1_MspInit 1 */
} }
else if(hspi->Instance==SPI2) else if(hspi->Instance==SPI2)
{ {
/* USER CODE BEGIN SPI2_MspInit 0 */ /* USER CODE BEGIN SPI2_MspInit 0 */
/* USER CODE END SPI2_MspInit 0 */ /* USER CODE END SPI2_MspInit 0 */
/** Initializes the peripherals clock /** Initializes the peripherals clock
*/ */
@ -385,26 +385,26 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi)
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2; GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN SPI2_MspInit 1 */ /* USER CODE BEGIN SPI2_MspInit 1 */
/* USER CODE END SPI2_MspInit 1 */ /* USER CODE END SPI2_MspInit 1 */
} }
} }
/** /**
* @brief SPI MSP De-Initialization * @brief SPI MSP De-Initialization
* This function freeze the hardware resources used in this example * This function freeze the hardware resources used in this example
* @param hspi: SPI handle pointer * @param hspi: SPI handle pointer
* @retval None * @retval None
*/ */
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
{ {
if(hspi->Instance==SPI1) if(hspi->Instance==SPI1)
{ {
/* USER CODE BEGIN SPI1_MspDeInit 0 */ /* USER CODE BEGIN SPI1_MspDeInit 0 */
/* USER CODE END SPI1_MspDeInit 0 */ /* USER CODE END SPI1_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
__HAL_RCC_SPI1_CLK_DISABLE(); __HAL_RCC_SPI1_CLK_DISABLE();
@ -418,15 +418,15 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_4|GPIO_PIN_5); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_4|GPIO_PIN_5);
/* USER CODE BEGIN SPI1_MspDeInit 1 */ /* USER CODE BEGIN SPI1_MspDeInit 1 */
/* USER CODE END SPI1_MspDeInit 1 */ /* USER CODE END SPI1_MspDeInit 1 */
} }
else if(hspi->Instance==SPI2) else if(hspi->Instance==SPI2)
{ {
/* USER CODE BEGIN SPI2_MspDeInit 0 */ /* USER CODE BEGIN SPI2_MspDeInit 0 */
/* USER CODE END SPI2_MspDeInit 0 */ /* USER CODE END SPI2_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
__HAL_RCC_SPI2_CLK_DISABLE(); __HAL_RCC_SPI2_CLK_DISABLE();
@ -442,27 +442,27 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi)
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12); HAL_GPIO_DeInit(GPIOA, GPIO_PIN_12);
/* USER CODE BEGIN SPI2_MspDeInit 1 */ /* USER CODE BEGIN SPI2_MspDeInit 1 */
/* USER CODE END SPI2_MspDeInit 1 */ /* USER CODE END SPI2_MspDeInit 1 */
} }
} }
/** /**
* @brief TIM_IC MSP Initialization * @brief TIM_IC MSP Initialization
* This function configures the hardware resources used in this example * This function configures the hardware resources used in this example
* @param htim_ic: TIM_IC handle pointer * @param htim_ic: TIM_IC handle pointer
* @retval None * @retval None
*/ */
void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic) void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
if(htim_ic->Instance==TIM15) if(htim_ic->Instance==TIM15)
{ {
/* USER CODE BEGIN TIM15_MspInit 0 */ /* USER CODE BEGIN TIM15_MspInit 0 */
/* USER CODE END TIM15_MspInit 0 */ /* USER CODE END TIM15_MspInit 0 */
/* Peripheral clock enable */ /* Peripheral clock enable */
__HAL_RCC_TIM15_CLK_ENABLE(); __HAL_RCC_TIM15_CLK_ENABLE();
@ -477,27 +477,27 @@ void HAL_TIM_IC_MspInit(TIM_HandleTypeDef* htim_ic)
GPIO_InitStruct.Alternate = GPIO_AF4_TIM15; GPIO_InitStruct.Alternate = GPIO_AF4_TIM15;
HAL_GPIO_Init(IMD_M_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(IMD_M_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN TIM15_MspInit 1 */ /* USER CODE BEGIN TIM15_MspInit 1 */
/* USER CODE END TIM15_MspInit 1 */ /* USER CODE END TIM15_MspInit 1 */
} }
} }
/** /**
* @brief TIM_IC MSP De-Initialization * @brief TIM_IC MSP De-Initialization
* This function freeze the hardware resources used in this example * This function freeze the hardware resources used in this example
* @param htim_ic: TIM_IC handle pointer * @param htim_ic: TIM_IC handle pointer
* @retval None * @retval None
*/ */
void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic) void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic)
{ {
if(htim_ic->Instance==TIM15) if(htim_ic->Instance==TIM15)
{ {
/* USER CODE BEGIN TIM15_MspDeInit 0 */ /* USER CODE BEGIN TIM15_MspDeInit 0 */
/* USER CODE END TIM15_MspDeInit 0 */ /* USER CODE END TIM15_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
__HAL_RCC_TIM15_CLK_DISABLE(); __HAL_RCC_TIM15_CLK_DISABLE();
@ -506,9 +506,9 @@ void HAL_TIM_IC_MspDeInit(TIM_HandleTypeDef* htim_ic)
*/ */
HAL_GPIO_DeInit(IMD_M_GPIO_Port, IMD_M_Pin); HAL_GPIO_DeInit(IMD_M_GPIO_Port, IMD_M_Pin);
/* USER CODE BEGIN TIM15_MspDeInit 1 */ /* USER CODE BEGIN TIM15_MspDeInit 1 */
/* USER CODE END TIM15_MspDeInit 1 */ /* USER CODE END TIM15_MspDeInit 1 */
} }
} }

View File

@ -1,5 +1,5 @@
########################################################################################################################## ##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [4.6.0-B36] date: [Sat Apr 26 19:50:03 CEST 2025] # File automatically-generated by tool: [projectgenerator] version: [4.6.0.1-B1] date: [Tue May 27 01:52:23 CEST 2025]
########################################################################################################################## ##########################################################################################################################
# ------------------------------------------------ # ------------------------------------------------

View File

@ -1,411 +1,455 @@
#MicroXplorer Configuration settings - do not modify #MicroXplorer Configuration settings - do not modify
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10 ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV2 ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV2
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ClockPrescaler ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,master,ClockPrescaler
ADC1.NbrOfConversionFlag=1 ADC1.NbrOfConversionFlag=1
ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC1.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE ADC1.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
ADC1.Rank-0\#ChannelRegularConversion=1 ADC1.Rank-0\#ChannelRegularConversion=1
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.master=1 ADC1.master=1
ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10 ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_10
ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV2 ADC2.ClockPrescaler=ADC_CLOCK_ASYNC_DIV2
ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,SingleDiff-0\#ChannelRegularConversion,ClockPrescaler ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,SingleDiff-0\#ChannelRegularConversion,ClockPrescaler
ADC2.NbrOfConversionFlag=1 ADC2.NbrOfConversionFlag=1
ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC2.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE ADC2.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
ADC2.Rank-0\#ChannelRegularConversion=1 ADC2.Rank-0\#ChannelRegularConversion=1
ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5 ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC2.SingleDiff-0\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED ADC2.SingleDiff-0\#ChannelRegularConversion=ADC_DIFFERENTIAL_ENDED
CAD.formats=[] CAD.formats=[]
CAD.pinconfig=Dual CAD.pinconfig=Dual
CAD.provider= CAD.provider=
FDCAN1.CalculateBaudRateNominal=500000 FDCAN1.CalculateBaudRateNominal=500000
FDCAN1.CalculateTimeBitNominal=2000 FDCAN1.CalculateTimeBitNominal=2000
FDCAN1.CalculateTimeQuantumNominal=62.5 FDCAN1.CalculateTimeQuantumNominal=62.5
FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,StdFiltersNbr,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr FDCAN1.IPParameters=CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal,StdFiltersNbr,NominalPrescaler,NominalTimeSeg1,NominalTimeSeg2,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr
FDCAN1.NominalPrescaler=2 FDCAN1.NominalPrescaler=2
FDCAN1.NominalTimeSeg1=23 FDCAN1.NominalTimeSeg1=23
FDCAN1.NominalTimeSeg2=8 FDCAN1.NominalTimeSeg2=8
FDCAN1.RxFifo0ElmtsNbr=16 FDCAN1.RxFifo0ElmtsNbr=16
FDCAN1.StdFiltersNbr=32 FDCAN1.StdFiltersNbr=32
FDCAN1.TxFifoQueueElmtsNbr=32 FDCAN1.TxFifoQueueElmtsNbr=32
File.Version=6 File.Version=6
GPIO.groupedBy=Group By Peripherals GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false KeepUserPlacement=false
Mcu.CPN=STM32H7A3RIT6 MMTAppReg1.MEMORYMAP.AppRegionName=DTCMRAM
Mcu.Family=STM32H7 MMTAppReg1.MEMORYMAP.ContextName=Cortex-M7NS
Mcu.IP0=ADC1 MMTAppReg1.MEMORYMAP.CoreName=Arm Cortex-M7
Mcu.IP1=ADC2 MMTAppReg1.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name
Mcu.IP10=TIM15 MMTAppReg1.MEMORYMAP.Name=DTCMRAM
Mcu.IP2=CORTEX_M7 MMTAppReg1.MEMORYMAP.Size=131072
Mcu.IP3=DEBUG MMTAppReg1.MEMORYMAP.StartAddress=0x20000000
Mcu.IP4=FDCAN1 MMTAppReg2.MEMORYMAP.AppRegionName=RAM
Mcu.IP5=NVIC MMTAppReg2.MEMORYMAP.ContextName=Cortex-M7NS
Mcu.IP6=RCC MMTAppReg2.MEMORYMAP.CoreName=Arm Cortex-M7
Mcu.IP7=SPI1 MMTAppReg2.MEMORYMAP.DefaultDataRegion=true
Mcu.IP8=SPI2 MMTAppReg2.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name,DefaultDataRegion
Mcu.IP9=SYS MMTAppReg2.MEMORYMAP.Name=RAM
Mcu.IPNb=11 MMTAppReg2.MEMORYMAP.Size=1048576
Mcu.Name=STM32H7A3R(G-I)Tx MMTAppReg2.MEMORYMAP.StartAddress=0x24000000
Mcu.Package=LQFP64 MMTAppReg3.MEMORYMAP.AppRegionName=ITCMRAM
Mcu.Pin0=PH0-OSC_IN MMTAppReg3.MEMORYMAP.Cacheability=WTRA
Mcu.Pin1=PH1-OSC_OUT MMTAppReg3.MEMORYMAP.ContextName=Cortex-M7NS
Mcu.Pin10=PA4 MMTAppReg3.MEMORYMAP.CoreName=Arm Cortex-M7
Mcu.Pin11=PA5 MMTAppReg3.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,ContextName,Name,Cacheability
Mcu.Pin12=PA6 MMTAppReg3.MEMORYMAP.Name=ITCMRAM
Mcu.Pin13=PA7 MMTAppReg3.MEMORYMAP.Size=65536
Mcu.Pin14=PC4 MMTAppReg3.MEMORYMAP.StartAddress=0x00000000
Mcu.Pin15=PC5 MMTAppReg4.MEMORYMAP.AP=RO_priv_only
Mcu.Pin16=PB0 MMTAppReg4.MEMORYMAP.AppRegionName=FLASH
Mcu.Pin17=PB1 MMTAppReg4.MEMORYMAP.Cacheability=WTRA
Mcu.Pin18=PB2 MMTAppReg4.MEMORYMAP.ContextName=Cortex-M7NS
Mcu.Pin19=PB10 MMTAppReg4.MEMORYMAP.CoreName=Arm Cortex-M7
Mcu.Pin2=PC0 MMTAppReg4.MEMORYMAP.DefaultCodeRegion=true
Mcu.Pin20=PB12 MMTAppReg4.MEMORYMAP.IPParameters=StartAddress,Size,CoreName,MemType,ContextName,Name,AP,Cacheability,DefaultCodeRegion,ISRRegion,RootBootRegion
Mcu.Pin21=PB13 MMTAppReg4.MEMORYMAP.ISRRegion=true
Mcu.Pin22=PB14 MMTAppReg4.MEMORYMAP.MemType=ROM
Mcu.Pin23=PB15 MMTAppReg4.MEMORYMAP.Name=FLASH
Mcu.Pin24=PC6 MMTAppReg4.MEMORYMAP.RootBootRegion=true
Mcu.Pin25=PC7 MMTAppReg4.MEMORYMAP.Size=2097152
Mcu.Pin26=PC9 MMTAppReg4.MEMORYMAP.StartAddress=0x08000000
Mcu.Pin27=PA8 MMTAppRegionsCount=4
Mcu.Pin28=PA9 MMTConfigApplied=false
Mcu.Pin29=PA10 Mcu.CPN=STM32H7A3RIT6
Mcu.Pin3=PC1 Mcu.Family=STM32H7
Mcu.Pin30=PA11 Mcu.IP0=ADC1
Mcu.Pin31=PA12 Mcu.IP1=ADC2
Mcu.Pin32=PA13 Mcu.IP10=SYS
Mcu.Pin33=PA14 Mcu.IP11=TIM15
Mcu.Pin34=PA15 Mcu.IP2=CORTEX_M7
Mcu.Pin35=PB3 Mcu.IP3=DEBUG
Mcu.Pin36=PB4 Mcu.IP4=FDCAN1
Mcu.Pin37=PB5 Mcu.IP5=MEMORYMAP
Mcu.Pin38=PB6 Mcu.IP6=NVIC
Mcu.Pin39=PB7 Mcu.IP7=RCC
Mcu.Pin4=PC2 Mcu.IP8=SPI1
Mcu.Pin40=PB8 Mcu.IP9=SPI2
Mcu.Pin41=PB9 Mcu.IPNb=12
Mcu.Pin42=VP_SYS_VS_Systick Mcu.Name=STM32H7A3R(G-I)Tx
Mcu.Pin5=PC3 Mcu.Package=LQFP64
Mcu.Pin6=PA0 Mcu.Pin0=PH0-OSC_IN
Mcu.Pin7=PA1 Mcu.Pin1=PH1-OSC_OUT
Mcu.Pin8=PA2 Mcu.Pin10=PA4
Mcu.Pin9=PA3 Mcu.Pin11=PA5
Mcu.PinsNb=43 Mcu.Pin12=PA6
Mcu.ThirdPartyNb=0 Mcu.Pin13=PA7
Mcu.UserConstants= Mcu.Pin14=PC4
Mcu.UserName=STM32H7A3RITx Mcu.Pin15=PC5
MxCube.Version=6.13.0 Mcu.Pin16=PB0
MxDb.Version=DB.6.0.130 Mcu.Pin17=PB1
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin18=PB2
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin19=PB10
NVIC.FDCAN1_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true Mcu.Pin2=PC0
NVIC.ForceEnableDMAVector=true Mcu.Pin20=PB12
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin21=PB13
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin22=PB14
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin23=PB15
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin24=PC6
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 Mcu.Pin25=PC7
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin26=PC9
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false Mcu.Pin27=PA8
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false Mcu.Pin28=PA9
PA0.GPIOParameters=GPIO_Label Mcu.Pin29=PA10
PA0.GPIO_Label=TS_ERROR Mcu.Pin3=PC1
PA0.Locked=true Mcu.Pin30=PA11
PA0.Signal=GPIO_Input Mcu.Pin31=PA12
PA1.GPIOParameters=GPIO_Label Mcu.Pin32=PA13
PA1.GPIO_Label=HV_ACTIVE Mcu.Pin33=PA14
PA1.Locked=true Mcu.Pin34=PA15
PA1.Signal=GPIO_Input Mcu.Pin35=PB3
PA10.GPIOParameters=GPIO_Label Mcu.Pin36=PB4
PA10.GPIO_Label=WAKE1 Mcu.Pin37=PB5
PA10.Locked=true Mcu.Pin38=PB6
PA10.Signal=GPIO_Input Mcu.Pin39=PB7
PA11.GPIOParameters=GPIO_Label Mcu.Pin4=PC2
PA11.GPIO_Label=AMS_NERROR Mcu.Pin40=PB8
PA11.Locked=true Mcu.Pin41=PB9
PA11.Signal=GPIO_Output Mcu.Pin42=VP_SYS_VS_Systick
PA12.Locked=true Mcu.Pin43=VP_MEMORYMAP_VS_MEMORYMAP
PA12.Mode=Full_Duplex_Master Mcu.Pin5=PC3
PA12.Signal=SPI2_SCK Mcu.Pin6=PA0
PA13.Locked=true Mcu.Pin7=PA1
PA13.Mode=Trace_Asynchronous_SW Mcu.Pin8=PA2
PA13.Signal=DEBUG_JTMS-SWDIO Mcu.Pin9=PA3
PA14.Locked=true Mcu.PinsNb=44
PA14.Mode=Trace_Asynchronous_SW Mcu.ThirdPartyNb=0
PA14.Signal=DEBUG_JTCK-SWCLK Mcu.UserConstants=
PA15.GPIOParameters=GPIO_Label Mcu.UserName=STM32H7A3RITx
PA15.GPIO_Label=STATUS_LED_G MxCube.Version=6.14.1
PA15.Locked=true MxDb.Version=DB.6.0.141
PA15.Signal=GPIO_Output NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA2.GPIOParameters=GPIO_Label NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA2.GPIO_Label=IMD_M NVIC.FDCAN1_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
PA2.Locked=true NVIC.ForceEnableDMAVector=true
PA2.Signal=S_TIM15_CH1 NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA3.GPIOParameters=GPIO_Label NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA3.GPIO_Label=IMD_OK NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA3.Locked=true NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA3.Signal=GPIO_Input NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
PA4.GPIOParameters=GPIO_Label NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA4.GPIO_Label=AMS_CS NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
PA4.Locked=true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA4.Mode=NSS_Signal_Hard_Output PA0.GPIOParameters=GPIO_Label
PA4.Signal=SPI1_NSS PA0.GPIO_Label=TS_ERROR
PA5.Locked=true PA0.Locked=true
PA5.Mode=Full_Duplex_Master PA0.Signal=GPIO_Input
PA5.Signal=SPI1_SCK PA1.GPIOParameters=GPIO_Label
PA6.GPIOParameters=GPIO_Label PA1.GPIO_Label=HV_ACTIVE
PA6.GPIO_Label=NEG_AIR_CLOSED PA1.Locked=true
PA6.Locked=true PA1.Signal=GPIO_Input
PA6.Signal=GPIO_Input PA10.GPIOParameters=GPIO_Label
PA7.GPIOParameters=GPIO_Label PA10.GPIO_Label=WAKE1
PA7.GPIO_Label=POS_AIR_CLOSED PA10.Locked=true
PA7.Locked=true PA10.Signal=GPIO_Input
PA7.Signal=GPIO_Input PA11.GPIOParameters=GPIO_Label
PA8.GPIOParameters=GPIO_Label PA11.GPIO_Label=AMS_NERROR
PA8.GPIO_Label=PRECHARGE_CTRL PA11.Locked=true
PA8.Locked=true PA11.Signal=GPIO_Output
PA8.Signal=GPIO_Output PA12.Locked=true
PA9.GPIOParameters=GPIO_Label PA12.Mode=Full_Duplex_Master
PA9.GPIO_Label=INTR1 PA12.Signal=SPI2_SCK
PA9.Locked=true PA13.Locked=true
PA9.Signal=GPIO_Input PA13.Mode=Trace_Asynchronous_SW
PB0.GPIOParameters=GPIO_Label PA13.Signal=DEBUG_JTMS-SWDIO
PB0.GPIO_Label=PRE_and_AIR+_open PA14.Locked=true
PB0.Locked=true PA14.Mode=Trace_Asynchronous_SW
PB0.Signal=GPIO_Input PA14.Signal=DEBUG_JTCK-SWCLK
PB1.GPIOParameters=GPIO_Label PA15.GPIOParameters=GPIO_Label
PB1.GPIO_Label=SDC_VOLTAGE PA15.GPIO_Label=STATUS_LED_G
PB1.Locked=true PA15.Locked=true
PB1.Signal=GPIO_Input PA15.Signal=GPIO_Output
PB10.GPIOParameters=GPIO_Label PA2.GPIOParameters=GPIO_Label
PB10.GPIO_Label=IMD_ERROR_LED PA2.GPIO_Label=IMD_M
PB10.Locked=true PA2.Locked=true
PB10.Signal=GPIO_Input PA2.Signal=S_TIM15_CH1
PB12.Locked=true PA3.GPIOParameters=GPIO_Label
PB12.Mode=NSS_Signal_Hard_Input PA3.GPIO_Label=IMD_OK
PB12.Signal=SPI2_NSS PA3.Locked=true
PB13.GPIOParameters=GPIO_Label PA3.Signal=GPIO_Input
PB13.GPIO_Label=AMS_ERROR_LED PA4.GPIOParameters=GPIO_Label
PB13.Locked=true PA4.GPIO_Label=AMS_CS
PB13.Signal=GPIO_Input PA4.Locked=true
PB14.Mode=Full_Duplex_Master PA4.Mode=NSS_Signal_Hard_Output
PB14.Signal=SPI2_MISO PA4.Signal=SPI1_NSS
PB15.GPIOParameters=GPIO_Label PA5.Locked=true
PB15.GPIO_Label=STATUS_LED_R PA5.Mode=Full_Duplex_Master
PB15.Locked=true PA5.Signal=SPI1_SCK
PB15.Signal=GPIO_Output PA6.GPIOParameters=GPIO_Label
PB2.GPIOParameters=GPIO_Label PA6.GPIO_Label=NEG_AIR_CLOSED
PB2.GPIO_Label=IMD_POWER PA6.Locked=true
PB2.Locked=true PA6.Signal=GPIO_Input
PB2.Signal=GPIO_Output PA7.GPIOParameters=GPIO_Label
PB3.Locked=true PA7.GPIO_Label=POS_AIR_CLOSED
PB3.Mode=Trace_Asynchronous_SW PA7.Locked=true
PB3.Signal=DEBUG_JTDO-SWO PA7.Signal=GPIO_Input
PB4.Locked=true PA8.GPIOParameters=GPIO_Label
PB4.Mode=Full_Duplex_Master PA8.GPIO_Label=PRECHARGE_CTRL
PB4.Signal=SPI1_MISO PA8.Locked=true
PB5.Locked=true PA8.Signal=GPIO_Output
PB5.Mode=Full_Duplex_Master PA9.GPIOParameters=GPIO_Label
PB5.Signal=SPI1_MOSI PA9.GPIO_Label=INTR1
PB6.GPIOParameters=GPIO_Label PA9.Locked=true
PB6.GPIO_Label=INTR2 PA9.Signal=GPIO_Input
PB6.Locked=true PB0.GPIOParameters=GPIO_Label
PB6.Signal=GPIO_Input PB0.GPIO_Label=PRE_and_AIR+_open
PB7.GPIOParameters=GPIO_Label PB0.Locked=true
PB7.GPIO_Label=WAKE2 PB0.Signal=GPIO_Input
PB7.Locked=true PB1.GPIOParameters=GPIO_Label
PB7.Signal=GPIO_Input PB1.GPIO_Label=SDC_VOLTAGE
PB8.Locked=true PB1.Locked=true
PB8.Mode=FDCAN_Activate PB1.Signal=GPIO_Input
PB8.Signal=FDCAN1_RX PB10.GPIOParameters=GPIO_Label
PB9.Locked=true PB10.GPIO_Label=IMD_ERROR_LED
PB9.Mode=FDCAN_Activate PB10.Locked=true
PB9.Signal=FDCAN1_TX PB10.Signal=GPIO_Input
PC0.GPIOParameters=GPIO_Label PB12.Locked=true
PC0.GPIO_Label=LV_I_measure PB12.Mode=NSS_Signal_Hard_Input
PC0.Locked=true PB12.Signal=SPI2_NSS
PC0.Signal=ADCx_INP10 PB13.GPIOParameters=GPIO_Label
PC1.GPIOParameters=GPIO_Label PB13.GPIO_Label=AMS_ERROR_LED
PC1.GPIO_Label=TEMP_TSDCDC PB13.Locked=true
PC1.Locked=true PB13.Signal=GPIO_Input
PC1.Signal=SharedAnalog_PC1 PB14.Mode=Full_Duplex_Master
PC2.GPIOParameters=GPIO_Label PB14.Signal=SPI2_MISO
PC2.GPIO_Label=STATUS_LED_B PB15.GPIOParameters=GPIO_Label
PC2.Locked=true PB15.GPIO_Label=STATUS_LED_R
PC2.Signal=GPIO_Output PB15.Locked=true
PC3.Locked=true PB15.Signal=GPIO_Output
PC3.Mode=Full_Duplex_Master PB2.GPIOParameters=GPIO_Label
PC3.Signal=SPI2_MOSI PB2.GPIO_Label=IMD_POWER
PC4.GPIOParameters=GPIO_Label PB2.Locked=true
PC4.GPIO_Label=MSTR1 PB2.Signal=GPIO_Output
PC4.Locked=true PB3.Locked=true
PC4.Signal=GPIO_Output PB3.Mode=Trace_Asynchronous_SW
PC5.GPIOParameters=GPIO_Label PB3.Signal=DEBUG_JTDO-SWO
PC5.GPIO_Label=MSTR2 PB4.Locked=true
PC5.Locked=true PB4.Mode=Full_Duplex_Master
PC5.Signal=GPIO_Output PB4.Signal=SPI1_MISO
PC6.GPIOParameters=GPIO_Label PB5.Locked=true
PC6.GPIO_Label=POS_AIR_CTRL PB5.Mode=Full_Duplex_Master
PC6.Locked=true PB5.Signal=SPI1_MOSI
PC6.Signal=GPIO_Output PB6.GPIOParameters=GPIO_Label
PC7.GPIOParameters=GPIO_Label PB6.GPIO_Label=INTR2
PC7.GPIO_Label=NEG_AIR_CTRL PB6.Locked=true
PC7.Locked=true PB6.Signal=GPIO_Input
PC7.Signal=GPIO_Output PB7.GPIOParameters=GPIO_Label
PC9.GPIOParameters=GPIO_Label PB7.GPIO_Label=WAKE2
PC9.GPIO_Label=TSAL_GREEN PB7.Locked=true
PC9.Locked=true PB7.Signal=GPIO_Input
PC9.Signal=GPIO_Input PB8.Locked=true
PH0-OSC_IN.Locked=true PB8.Mode=FDCAN_Activate
PH0-OSC_IN.Mode=HSE-External-Oscillator PB8.Signal=FDCAN1_RX
PH0-OSC_IN.Signal=RCC_OSC_IN PB9.Locked=true
PH1-OSC_OUT.Locked=true PB9.Mode=FDCAN_Activate
PH1-OSC_OUT.Mode=HSE-External-Oscillator PB9.Signal=FDCAN1_TX
PH1-OSC_OUT.Signal=RCC_OSC_OUT PC0.GPIOParameters=GPIO_Label
PinOutPanel.RotationAngle=0 PC0.GPIO_Label=LV_I_measure
ProjectManager.AskForMigrate=true PC0.Locked=true
ProjectManager.BackupPrevious=false PC0.Signal=ADCx_INP10
ProjectManager.CompilerLinker=GCC PC1.GPIOParameters=GPIO_Label
ProjectManager.CompilerOptimize=6 PC1.GPIO_Label=TEMP_TSDCDC
ProjectManager.ComputerToolchain=false PC1.Locked=true
ProjectManager.CoupleFile=false PC1.Signal=SharedAnalog_PC1
ProjectManager.CustomerFirmwarePackage= PC2.GPIOParameters=GPIO_Label
ProjectManager.DefaultFWLocation=true PC2.GPIO_Label=STATUS_LED_B
ProjectManager.DeletePrevious=true PC2.Locked=true
ProjectManager.DeviceId=STM32H7A3RITx PC2.Signal=GPIO_Output
ProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.12.1 PC3.Locked=true
ProjectManager.FreePins=false PC3.Mode=Full_Duplex_Master
ProjectManager.HalAssertFull=false PC3.Signal=SPI2_MOSI
ProjectManager.HeapSize=0x200 PC4.GPIOParameters=GPIO_Label
ProjectManager.KeepUserCode=true PC4.GPIO_Label=MSTR1
ProjectManager.LastFirmware=true PC4.Locked=true
ProjectManager.LibraryCopy=1 PC4.Signal=GPIO_Output
ProjectManager.MainLocation=Core/Src PC5.GPIOParameters=GPIO_Label
ProjectManager.NoMain=false PC5.GPIO_Label=MSTR2
ProjectManager.PreviousToolchain= PC5.Locked=true
ProjectManager.ProjectBuild=false PC5.Signal=GPIO_Output
ProjectManager.ProjectFileName=Master_FT25.ioc PC6.GPIOParameters=GPIO_Label
ProjectManager.ProjectName=Master_FT25 PC6.GPIO_Label=POS_AIR_CTRL
ProjectManager.ProjectStructure= PC6.Locked=true
ProjectManager.RegisterCallBack= PC6.Signal=GPIO_Output
ProjectManager.StackSize=0x400 PC7.GPIOParameters=GPIO_Label
ProjectManager.TargetToolchain=Makefile PC7.GPIO_Label=NEG_AIR_CTRL
ProjectManager.ToolChainLocation= PC7.Locked=true
ProjectManager.UAScriptAfterPath= PC7.Signal=GPIO_Output
ProjectManager.UAScriptBeforePath= PC9.GPIOParameters=GPIO_Label
ProjectManager.UnderRoot=false PC9.GPIO_Label=TSAL_GREEN
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_FDCAN1_Init-FDCAN1-false-HAL-true,4-MX_TIM15_Init-TIM15-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true,6-MX_SPI2_Init-SPI2-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_ADC2_Init-ADC2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true PC9.Locked=true
RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_PLL3 PC9.Signal=GPIO_Input
RCC.ADCFreq_Value=42666666.666666664 PH0-OSC_IN.Locked=true
RCC.AHB12Freq_Value=64000000 PH0-OSC_IN.Mode=HSE-External-Oscillator
RCC.AHB4Freq_Value=64000000 PH0-OSC_IN.Signal=RCC_OSC_IN
RCC.APB1Freq_Value=64000000 PH1-OSC_OUT.Locked=true
RCC.APB2Freq_Value=64000000 PH1-OSC_OUT.Mode=HSE-External-Oscillator
RCC.APB3Freq_Value=64000000 PH1-OSC_OUT.Signal=RCC_OSC_OUT
RCC.APB4Freq_Value=64000000 PinOutPanel.RotationAngle=0
RCC.AXIClockFreq_Value=64000000 ProjectManager.AskForMigrate=true
RCC.CDCPREFreq_Value=64000000 ProjectManager.BackupPrevious=false
RCC.CECFreq_Value=32000 ProjectManager.CompilerLinker=GCC
RCC.CKPERFreq_Value=64000000 ProjectManager.CompilerOptimize=6
RCC.CortexFreq_Value=64000000 ProjectManager.ComputerToolchain=false
RCC.CpuClockFreq_Value=64000000 ProjectManager.CoupleFile=false
RCC.DAC1Freq_Value=32000 ProjectManager.CustomerFirmwarePackage=
RCC.DAC2Freq_Value=32000 ProjectManager.DefaultFWLocation=true
RCC.DFSDM2ACLkFreq_Value=64000000 ProjectManager.DeletePrevious=true
RCC.DFSDM2Freq_Value=64000000 ProjectManager.DeviceId=STM32H7A3RITx
RCC.DFSDMACLkFreq_Value=64000000 ProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.12.1
RCC.DFSDMFreq_Value=64000000 ProjectManager.FreePins=false
RCC.DIVM1=1 ProjectManager.HalAssertFull=false
RCC.DIVM2=1 ProjectManager.HeapSize=0x200
RCC.DIVM3=1 ProjectManager.KeepUserCode=true
RCC.DIVN1=8 ProjectManager.LastFirmware=true
RCC.DIVN2=8 ProjectManager.LibraryCopy=1
RCC.DIVN3=8 ProjectManager.MainLocation=Core/Src
RCC.DIVP1Freq_Value=64000000 ProjectManager.NoMain=false
RCC.DIVP2Freq_Value=64000000 ProjectManager.PreviousToolchain=
RCC.DIVP3Freq_Value=64000000 ProjectManager.ProjectBuild=false
RCC.DIVQ1Freq_Value=64000000 ProjectManager.ProjectFileName=Master_FT25.ioc
RCC.DIVQ2=4 ProjectManager.ProjectName=Master_FT25
RCC.DIVQ2Freq_Value=32000000 ProjectManager.ProjectStructure=
RCC.DIVQ3Freq_Value=64000000 ProjectManager.RegisterCallBack=
RCC.DIVR1Freq_Value=64000000 ProjectManager.StackSize=0x400
RCC.DIVR2Freq_Value=64000000 ProjectManager.TargetToolchain=Makefile
RCC.DIVR3=3 ProjectManager.ToolChainLocation=
RCC.DIVR3Freq_Value=42666666.666666664 ProjectManager.UAScriptAfterPath=
RCC.FDCANCLockSelection=RCC_FDCANCLKSOURCE_PLL2 ProjectManager.UAScriptBeforePath=
RCC.FDCANFreq_Value=32000000 ProjectManager.UnderRoot=false
RCC.FMCFreq_Value=64000000 ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_FDCAN1_Init-FDCAN1-false-HAL-true,4-MX_TIM15_Init-TIM15-false-HAL-true,5-MX_SPI1_Init-SPI1-false-HAL-true,6-MX_SPI2_Init-SPI2-false-HAL-true,7-MX_ADC1_Init-ADC1-false-HAL-true,8-MX_ADC2_Init-ADC2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.FamilyName=M RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_PLL3
RCC.HCLK3ClockFreq_Value=64000000 RCC.ADCFreq_Value=42666666.666666664
RCC.HCLKFreq_Value=64000000 RCC.AHB12Freq_Value=64000000
RCC.HSE_VALUE=16000000 RCC.AHB4Freq_Value=64000000
RCC.I2C123CLockSelection=RCC_I2C123CLKSOURCE_CSI RCC.APB1Freq_Value=64000000
RCC.I2C123Freq_Value=4000000 RCC.APB2Freq_Value=64000000
RCC.I2C4Freq_Value=64000000 RCC.APB3Freq_Value=64000000
RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CDCPREFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,DAC1Freq_Value,DAC2Freq_Value,DFSDM2ACLkFreq_Value,DFSDM2Freq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,FDCANCLockSelection,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HSE_VALUE,I2C123CLockSelection,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI2AFreq_Value,SAI2BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value RCC.APB4Freq_Value=64000000
RCC.LPTIM1Freq_Value=64000000 RCC.AXIClockFreq_Value=64000000
RCC.LPTIM2Freq_Value=64000000 RCC.CDCPREFreq_Value=64000000
RCC.LPTIM345Freq_Value=64000000 RCC.CECFreq_Value=32000
RCC.LPUART1Freq_Value=64000000 RCC.CKPERFreq_Value=64000000
RCC.LTDCFreq_Value=42666666.666666664 RCC.CortexFreq_Value=64000000
RCC.MCO1PinFreq_Value=64000000 RCC.CpuClockFreq_Value=64000000
RCC.MCO2PinFreq_Value=64000000 RCC.DAC1Freq_Value=32000
RCC.PLL2FRACN=0 RCC.DAC2Freq_Value=32000
RCC.PLL3FRACN=0 RCC.DFSDM2ACLkFreq_Value=64000000
RCC.PLLFRACN=0 RCC.DFSDM2Freq_Value=64000000
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE RCC.DFSDMACLkFreq_Value=64000000
RCC.QSPIFreq_Value=64000000 RCC.DFSDMFreq_Value=64000000
RCC.RNGFreq_Value=48000000 RCC.DIVM1=1
RCC.RTCFreq_Value=32000 RCC.DIVM2=1
RCC.SAI1Freq_Value=64000000 RCC.DIVM3=1
RCC.SAI2AFreq_Value=64000000 RCC.DIVN1=8
RCC.SAI2BFreq_Value=64000000 RCC.DIVN2=8
RCC.SDMMCFreq_Value=64000000 RCC.DIVN3=8
RCC.SPDIFRXFreq_Value=64000000 RCC.DIVP1Freq_Value=64000000
RCC.SPI123Freq_Value=64000000 RCC.DIVP2Freq_Value=64000000
RCC.SPI45Freq_Value=64000000 RCC.DIVP3Freq_Value=64000000
RCC.SPI6Freq_Value=64000000 RCC.DIVQ1Freq_Value=64000000
RCC.SWPMI1Freq_Value=64000000 RCC.DIVQ2=4
RCC.SYSCLKFreq_VALUE=64000000 RCC.DIVQ2Freq_Value=32000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.DIVQ3Freq_Value=64000000
RCC.Tim1OutputFreq_Value=64000000 RCC.DIVR1Freq_Value=64000000
RCC.Tim2OutputFreq_Value=64000000 RCC.DIVR2Freq_Value=64000000
RCC.TraceFreq_Value=64000000 RCC.DIVR3=3
RCC.USART16Freq_Value=64000000 RCC.DIVR3Freq_Value=42666666.666666664
RCC.USART234578Freq_Value=64000000 RCC.FDCANCLockSelection=RCC_FDCANCLKSOURCE_PLL2
RCC.USBFreq_Value=64000000 RCC.FDCANFreq_Value=32000000
RCC.VCO1OutputFreq_Value=128000000 RCC.FMCFreq_Value=64000000
RCC.VCO2OutputFreq_Value=128000000 RCC.FamilyName=M
RCC.VCO3OutputFreq_Value=128000000 RCC.HCLK3ClockFreq_Value=64000000
RCC.VCOInput1Freq_Value=16000000 RCC.HCLKFreq_Value=64000000
RCC.VCOInput2Freq_Value=16000000 RCC.HSE_VALUE=16000000
RCC.VCOInput3Freq_Value=16000000 RCC.I2C123CLockSelection=RCC_I2C123CLKSOURCE_CSI
SH.ADCx_INP10.0=ADC1_INP10,IN10-Single-Ended RCC.I2C123Freq_Value=4000000
SH.ADCx_INP10.1=ADC2_INP10,IN10-Differential RCC.I2C4Freq_Value=64000000
SH.ADCx_INP10.ConfNb=2 RCC.IPParameters=ADCCLockSelection,ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CDCPREFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,DAC1Freq_Value,DAC2Freq_Value,DFSDM2ACLkFreq_Value,DFSDM2Freq_Value,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVM3,DIVN1,DIVN2,DIVN3,DIVP1Freq_Value,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3,DIVR3Freq_Value,FDCANCLockSelection,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HSE_VALUE,I2C123CLockSelection,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL2FRACN,PLL3FRACN,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI2AFreq_Value,SAI2BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
SH.S_TIM15_CH1.0=TIM15_CH1,PWM_Input_1 RCC.LPTIM1Freq_Value=64000000
SH.S_TIM15_CH1.ConfNb=1 RCC.LPTIM2Freq_Value=64000000
SH.SharedAnalog_PC1.0=ADC2_INP11 RCC.LPTIM345Freq_Value=64000000
SH.SharedAnalog_PC1.1=ADC2_INN10,IN10-Differential RCC.LPUART1Freq_Value=64000000
SH.SharedAnalog_PC1.ConfNb=2 RCC.LTDCFreq_Value=42666666.666666664
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_128 RCC.MCO1PinFreq_Value=64000000
SPI1.CalculateBaudRate=500.0 KBits/s RCC.MCO2PinFreq_Value=64000000
SPI1.DataSize=SPI_DATASIZE_8BIT RCC.PLL2FRACN=0
SPI1.Direction=SPI_DIRECTION_2LINES RCC.PLL3FRACN=0
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,BaudRatePrescaler,DataSize RCC.PLLFRACN=0
SPI1.Mode=SPI_MODE_MASTER RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
SPI1.VirtualNSS=VM_NSSHARD RCC.QSPIFreq_Value=64000000
SPI1.VirtualType=VM_MASTER RCC.RNGFreq_Value=48000000
SPI2.CalculateBaudRate=32.0 MBits/s RCC.RTCFreq_Value=32000
SPI2.Direction=SPI_DIRECTION_2LINES RCC.SAI1Freq_Value=64000000
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS RCC.SAI2AFreq_Value=64000000
SPI2.Mode=SPI_MODE_MASTER RCC.SAI2BFreq_Value=64000000
SPI2.VirtualNSS=VM_NSSHARD RCC.SDMMCFreq_Value=64000000
SPI2.VirtualType=VM_MASTER RCC.SPDIFRXFreq_Value=64000000
TIM15.IPParameters=Prescaler RCC.SPI123Freq_Value=64000000
TIM15.Prescaler=16000-1 RCC.SPI45Freq_Value=64000000
VP_SYS_VS_Systick.Mode=SysTick RCC.SPI6Freq_Value=64000000
VP_SYS_VS_Systick.Signal=SYS_VS_Systick RCC.SWPMI1Freq_Value=64000000
board=custom RCC.SYSCLKFreq_VALUE=64000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.Tim1OutputFreq_Value=64000000
RCC.Tim2OutputFreq_Value=64000000
RCC.TraceFreq_Value=64000000
RCC.USART16Freq_Value=64000000
RCC.USART234578Freq_Value=64000000
RCC.USBFreq_Value=64000000
RCC.VCO1OutputFreq_Value=128000000
RCC.VCO2OutputFreq_Value=128000000
RCC.VCO3OutputFreq_Value=128000000
RCC.VCOInput1Freq_Value=16000000
RCC.VCOInput2Freq_Value=16000000
RCC.VCOInput3Freq_Value=16000000
SH.ADCx_INP10.0=ADC1_INP10,IN10-Single-Ended
SH.ADCx_INP10.1=ADC2_INP10,IN10-Differential
SH.ADCx_INP10.ConfNb=2
SH.S_TIM15_CH1.0=TIM15_CH1,PWM_Input_1
SH.S_TIM15_CH1.ConfNb=1
SH.SharedAnalog_PC1.0=ADC2_INP11
SH.SharedAnalog_PC1.1=ADC2_INN10,IN10-Differential
SH.SharedAnalog_PC1.ConfNb=2
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_128
SPI1.CalculateBaudRate=500.0 KBits/s
SPI1.DataSize=SPI_DATASIZE_8BIT
SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,BaudRatePrescaler,DataSize,MasterReceiverAutoSusp
SPI1.MasterReceiverAutoSusp=SPI_MASTER_RX_AUTOSUSP_ENABLE
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualNSS=VM_NSSHARD
SPI1.VirtualType=VM_MASTER
SPI2.CalculateBaudRate=32.0 MBits/s
SPI2.Direction=SPI_DIRECTION_2LINES
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,VirtualNSS,MasterReceiverAutoSusp
SPI2.MasterReceiverAutoSusp=SPI_MASTER_RX_AUTOSUSP_ENABLE
SPI2.Mode=SPI_MODE_MASTER
SPI2.VirtualNSS=VM_NSSHARD
SPI2.VirtualType=VM_MASTER
TIM15.IPParameters=Prescaler
TIM15.Prescaler=16000-1
VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg
VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
board=custom

View File

@ -1,209 +1,209 @@
/* /*
****************************************************************************** ******************************************************************************
** **
** File : LinkerScript.ld ** File : LinkerScript.ld
** **
** Author : STM32CubeMX ** Author : STM32CubeMX
** **
** Abstract : Linker script for STM32H7A3RITx series ** Abstract : Linker script for STM32H7A3RITx series
** 2048Kbytes FLASH and 1216Kbytes RAM ** 2048Kbytes FLASH and 1216Kbytes RAM
** **
** Set heap size, stack size and stack location according ** Set heap size, stack size and stack location according
** to application requirements. ** to application requirements.
** **
** Set memory bank area and size if external memory is used. ** Set memory bank area and size if external memory is used.
** **
** Target : STMicroelectronics STM32 ** Target : STMicroelectronics STM32
** **
** Distribution: The file is distributed “as is,” without any warranty ** Distribution: The file is distributed “as is,” without any warranty
** of any kind. ** of any kind.
** **
***************************************************************************** *****************************************************************************
** @attention ** @attention
** **
** <h2><center>&copy; COPYRIGHT(c) 2025 STMicroelectronics</center></h2> ** <h2><center>&copy; COPYRIGHT(c) 2025 STMicroelectronics</center></h2>
** **
** Redistribution and use in source and binary forms, with or without modification, ** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met: ** are permitted provided that the following conditions are met:
** 1. Redistributions of source code must retain the above copyright notice, ** 1. Redistributions of source code must retain the above copyright notice,
** this list of conditions and the following disclaimer. ** this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright notice, ** 2. Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer in the documentation ** this list of conditions and the following disclaimer in the documentation
** and/or other materials provided with the distribution. ** and/or other materials provided with the distribution.
** 3. Neither the name of STMicroelectronics nor the names of its contributors ** 3. Neither the name of STMicroelectronics nor the names of its contributors
** may be used to endorse or promote products derived from this software ** may be used to endorse or promote products derived from this software
** without specific prior written permission. ** without specific prior written permission.
** **
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE ** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER ** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ** 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 ** 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. ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
** **
***************************************************************************** *****************************************************************************
*/ */
/* Entry Point */ /* Entry Point */
ENTRY(Reset_Handler) ENTRY(Reset_Handler)
/* Highest address of the user mode stack */ /* Highest address of the user mode stack */
_estack = ORIGIN(DTCMRAM) + LENGTH(DTCMRAM); /* end of RAM */ _estack = ORIGIN(DTCMRAM) + LENGTH(DTCMRAM); /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */ /* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x200; /* required amount of heap */ _Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x400; /* required amount of stack */ _Min_Stack_Size = 0x400; /* required amount of stack */
/* Specify the memory areas */ /* Specify the memory areas */
MEMORY MEMORY
{ {
DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 1024K RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 1024K
ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K
} }
/* Define output sections */ /* Define output sections */
SECTIONS SECTIONS
{ {
/* The startup code goes first into FLASH */ /* The startup code goes first into FLASH */
.isr_vector : .isr_vector :
{ {
. = ALIGN(4); . = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */ KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
/* The program code and other data goes into FLASH */ /* The program code and other data goes into FLASH */
.text : .text :
{ {
. = ALIGN(4); . = ALIGN(4);
*(.text) /* .text sections (code) */ *(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */ *(.text*) /* .text* sections (code) */
*(.glue_7) /* glue arm to thumb code */ *(.glue_7) /* glue arm to thumb code */
*(.glue_7t) /* glue thumb to arm code */ *(.glue_7t) /* glue thumb to arm code */
*(.eh_frame) *(.eh_frame)
KEEP (*(.init)) KEEP (*(.init))
KEEP (*(.fini)) KEEP (*(.fini))
. = ALIGN(4); . = ALIGN(4);
_etext = .; /* define a global symbols at end of code */ _etext = .; /* define a global symbols at end of code */
} >FLASH } >FLASH
/* Constant data goes into FLASH */ /* Constant data goes into FLASH */
.rodata : .rodata :
{ {
. = ALIGN(4); . = ALIGN(4);
*(.rodata) /* .rodata sections (constants, strings, etc.) */ *(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
.ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ .ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{ {
. = ALIGN(4); . = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*) *(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
.ARM (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ .ARM (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{ {
. = ALIGN(4); . = ALIGN(4);
__exidx_start = .; __exidx_start = .;
*(.ARM.exidx*) *(.ARM.exidx*)
__exidx_end = .; __exidx_end = .;
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
.preinit_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ .preinit_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{ {
. = ALIGN(4); . = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .); PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*)) KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .); PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
.init_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ .init_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{ {
. = ALIGN(4); . = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .); PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*))) KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*)) KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .); PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
.fini_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */ .fini_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{ {
. = ALIGN(4); . = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .); PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*))) KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array*)) KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .); PROVIDE_HIDDEN (__fini_array_end = .);
. = ALIGN(4); . = ALIGN(4);
} >FLASH } >FLASH
/* used by the startup to initialize data */ /* used by the startup to initialize data */
_sidata = LOADADDR(.data); _sidata = LOADADDR(.data);
/* Initialized data sections goes into RAM, load LMA copy after code */ /* Initialized data sections goes into RAM, load LMA copy after code */
.data : .data :
{ {
. = ALIGN(4); . = ALIGN(4);
_sdata = .; /* create a global symbol at data start */ _sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */ *(.data) /* .data sections */
*(.data*) /* .data* sections */ *(.data*) /* .data* sections */
*(.RamFunc) /* .RamFunc sections */ *(.RamFunc) /* .RamFunc sections */
*(.RamFunc*) /* .RamFunc* sections */ *(.RamFunc*) /* .RamFunc* sections */
. = ALIGN(4); . = ALIGN(4);
_edata = .; /* define a global symbol at data end */ _edata = .; /* define a global symbol at data end */
} >DTCMRAM AT> FLASH } >DTCMRAM AT> FLASH
/* Uninitialized data section */ /* Uninitialized data section */
. = ALIGN(4); . = ALIGN(4);
.bss : .bss :
{ {
/* This is used by the startup in order to initialize the .bss secion */ /* This is used by the startup in order to initialize the .bss secion */
_sbss = .; /* define a global symbol at bss start */ _sbss = .; /* define a global symbol at bss start */
__bss_start__ = _sbss; __bss_start__ = _sbss;
*(.bss) *(.bss)
*(.bss*) *(.bss*)
*(COMMON) *(COMMON)
. = ALIGN(4); . = ALIGN(4);
_ebss = .; /* define a global symbol at bss end */ _ebss = .; /* define a global symbol at bss end */
__bss_end__ = _ebss; __bss_end__ = _ebss;
} >DTCMRAM } >DTCMRAM
/* User_heap_stack section, used to check that there is enough RAM left */ /* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack : ._user_heap_stack :
{ {
. = ALIGN(8); . = ALIGN(8);
PROVIDE ( end = . ); PROVIDE ( end = . );
PROVIDE ( _end = . ); PROVIDE ( _end = . );
. = . + _Min_Heap_Size; . = . + _Min_Heap_Size;
. = . + _Min_Stack_Size; . = . + _Min_Stack_Size;
. = ALIGN(8); . = ALIGN(8);
} >DTCMRAM } >DTCMRAM
/* Remove information from the standard libraries */ /* Remove information from the standard libraries */
/DISCARD/ : /DISCARD/ :
{ {
libc.a ( * ) libc.a ( * )
libm.a ( * ) libm.a ( * )
libgcc.a ( * ) libgcc.a ( * )
} }
} }