This commit is contained in:
TuxMonkey
2025-11-20 17:19:43 +08:00
parent a46ac6e1d8
commit a5428702d7
10 changed files with 419 additions and 110 deletions

View File

@@ -32,12 +32,15 @@ extern "C" {
/* USER CODE END Includes */ /* USER CODE END Includes */
extern ADC_HandleTypeDef hadc1;
extern ADC_HandleTypeDef hadc3; extern ADC_HandleTypeDef hadc3;
/* USER CODE BEGIN Private defines */ /* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */ /* USER CODE END Private defines */
void MX_ADC1_Init(void);
void MX_ADC3_Init(void); void MX_ADC3_Init(void);
/* USER CODE BEGIN Prototypes */ /* USER CODE BEGIN Prototypes */

View File

@@ -52,12 +52,14 @@ void MemManage_Handler(void);
void BusFault_Handler(void); void BusFault_Handler(void);
void UsageFault_Handler(void); void UsageFault_Handler(void);
void DebugMon_Handler(void); void DebugMon_Handler(void);
void DMA1_Stream0_IRQHandler(void);
void DMA1_Stream1_IRQHandler(void); void DMA1_Stream1_IRQHandler(void);
void DMA1_Stream2_IRQHandler(void); void DMA1_Stream2_IRQHandler(void);
void DMA1_Stream3_IRQHandler(void); void DMA1_Stream3_IRQHandler(void);
void DMA1_Stream4_IRQHandler(void); void DMA1_Stream4_IRQHandler(void);
void DMA1_Stream5_IRQHandler(void); void DMA1_Stream5_IRQHandler(void);
void DMA1_Stream6_IRQHandler(void); void DMA1_Stream6_IRQHandler(void);
void ADC_IRQHandler(void);
void FDCAN1_IT0_IRQHandler(void); void FDCAN1_IT0_IRQHandler(void);
void FDCAN2_IT0_IRQHandler(void); void FDCAN2_IT0_IRQHandler(void);
void SPI1_IRQHandler(void); void SPI1_IRQHandler(void);

View File

@@ -24,8 +24,82 @@
/* USER CODE END 0 */ /* USER CODE END 0 */
ADC_HandleTypeDef hadc1;
ADC_HandleTypeDef hadc3; ADC_HandleTypeDef hadc3;
DMA_HandleTypeDef hdma_adc1;
/* ADC1 init function */
void MX_ADC1_Init(void)
{
/* USER CODE BEGIN ADC1_Init 0 */
/* USER CODE END ADC1_Init 0 */
ADC_MultiModeTypeDef multimode = {0};
ADC_ChannelConfTypeDef sConfig = {0};
/* USER CODE BEGIN ADC1_Init 1 */
/* USER CODE END ADC1_Init 1 */
/** Common config
*/
hadc1.Instance = ADC1;
hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV64;
hadc1.Init.Resolution = ADC_RESOLUTION_16B;
hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
hadc1.Init.LowPowerAutoWait = DISABLE;
hadc1.Init.ContinuousConvMode = ENABLE;
hadc1.Init.NbrOfConversion = 2;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
hadc1.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;
hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;
hadc1.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;
hadc1.Init.OversamplingMode = DISABLE;
hadc1.Init.Oversampling.Ratio = 1;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/** Configure the ADC multi-mode
*/
multimode.Mode = ADC_MODE_INDEPENDENT;
if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_4;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
sConfig.SingleDiff = ADC_SINGLE_ENDED;
sConfig.OffsetNumber = ADC_OFFSET_NONE;
sConfig.Offset = 0;
sConfig.OffsetSignedSaturation = DISABLE;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Rank = ADC_REGULAR_RANK_2;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN ADC1_Init 2 */
/* USER CODE END ADC1_Init 2 */
}
/* ADC3 init function */ /* ADC3 init function */
void MX_ADC3_Init(void) void MX_ADC3_Init(void)
{ {
@@ -88,30 +162,55 @@ void MX_ADC3_Init(void)
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
{ {
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
if(adcHandle->Instance==ADC3) if(adcHandle->Instance==ADC1)
{ {
/* USER CODE BEGIN ADC3_MspInit 0 */ /* USER CODE BEGIN ADC1_MspInit 0 */
/* USER CODE END ADC3_MspInit 0 */ /* USER CODE END ADC1_MspInit 0 */
/* ADC1 clock enable */
__HAL_RCC_ADC12_CLK_ENABLE();
/** Initializes the peripherals clock __HAL_RCC_GPIOC_CLK_ENABLE();
/**ADC1 GPIO Configuration
PC4 ------> ADC1_INP4
*/ */
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC; GPIO_InitStruct.Pin = GPIO_PIN_4;
PeriphClkInitStruct.PLL2.PLL2M = 2; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
PeriphClkInitStruct.PLL2.PLL2N = 16; GPIO_InitStruct.Pull = GPIO_NOPULL;
PeriphClkInitStruct.PLL2.PLL2P = 2; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
PeriphClkInitStruct.PLL2.PLL2Q = 2;
PeriphClkInitStruct.PLL2.PLL2R = 2; /* ADC1 DMA Init */
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3; /* ADC1 Init */
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE; hdma_adc1.Instance = DMA1_Stream2;
PeriphClkInitStruct.PLL2.PLL2FRACN = 0; hdma_adc1.Init.Request = DMA_REQUEST_ADC1;
PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2; hdma_adc1.Init.Direction = DMA_PERIPH_TO_MEMORY;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) hdma_adc1.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_adc1.Init.Mode = DMA_CIRCULAR;
hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
hdma_adc1.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
__HAL_LINKDMA(adcHandle,DMA_Handle,hdma_adc1);
/* ADC1 interrupt Init */
HAL_NVIC_SetPriority(ADC_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(ADC_IRQn);
/* USER CODE BEGIN ADC1_MspInit 1 */
/* USER CODE END ADC1_MspInit 1 */
}
else if(adcHandle->Instance==ADC3)
{
/* USER CODE BEGIN ADC3_MspInit 0 */
/* USER CODE END ADC3_MspInit 0 */
/* ADC3 clock enable */ /* ADC3 clock enable */
__HAL_RCC_ADC3_CLK_ENABLE(); __HAL_RCC_ADC3_CLK_ENABLE();
/* USER CODE BEGIN ADC3_MspInit 1 */ /* USER CODE BEGIN ADC3_MspInit 1 */
@@ -123,7 +222,29 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle) void HAL_ADC_MspDeInit(ADC_HandleTypeDef* adcHandle)
{ {
if(adcHandle->Instance==ADC3) if(adcHandle->Instance==ADC1)
{
/* USER CODE BEGIN ADC1_MspDeInit 0 */
/* USER CODE END ADC1_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_ADC12_CLK_DISABLE();
/**ADC1 GPIO Configuration
PC4 ------> ADC1_INP4
*/
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_4);
/* ADC1 DMA DeInit */
HAL_DMA_DeInit(adcHandle->DMA_Handle);
/* ADC1 interrupt Deinit */
HAL_NVIC_DisableIRQ(ADC_IRQn);
/* USER CODE BEGIN ADC1_MspDeInit 1 */
/* USER CODE END ADC1_MspDeInit 1 */
}
else if(adcHandle->Instance==ADC3)
{ {
/* USER CODE BEGIN ADC3_MspDeInit 0 */ /* USER CODE BEGIN ADC3_MspDeInit 0 */

View File

@@ -44,6 +44,9 @@ void MX_DMA_Init(void)
__HAL_RCC_DMA1_CLK_ENABLE(); __HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */ /* DMA interrupt init */
/* DMA1_Stream0_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream0_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Stream0_IRQn);
/* DMA1_Stream1_IRQn interrupt configuration */ /* DMA1_Stream1_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 5, 0); HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn); HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);

View File

@@ -61,6 +61,7 @@
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void); void SystemClock_Config(void);
void PeriphCommonClock_Config(void);
static void MPU_Config(void); static void MPU_Config(void);
void MX_FREERTOS_Init(void); void MX_FREERTOS_Init(void);
/* USER CODE BEGIN PFP */ /* USER CODE BEGIN PFP */
@@ -106,6 +107,9 @@ int main(void)
/* Configure the system clock */ /* Configure the system clock */
SystemClock_Config(); SystemClock_Config();
/* Configure the peripherals common clocks */
PeriphCommonClock_Config();
/* USER CODE BEGIN SysInit */ /* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */ /* USER CODE END SysInit */
@@ -130,6 +134,7 @@ int main(void)
MX_UART5_Init(); MX_UART5_Init();
MX_TIM3_Init(); MX_TIM3_Init();
MX_SPI6_Init(); MX_SPI6_Init();
MX_ADC1_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
robotSelfCheck(); //自检LED robotSelfCheck(); //自检LED
@@ -222,6 +227,32 @@ void SystemClock_Config(void)
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1);
} }
/**
* @brief Peripherals Common Clock Configuration
* @retval None
*/
void PeriphCommonClock_Config(void)
{
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADC;
PeriphClkInitStruct.PLL2.PLL2M = 2;
PeriphClkInitStruct.PLL2.PLL2N = 16;
PeriphClkInitStruct.PLL2.PLL2P = 2;
PeriphClkInitStruct.PLL2.PLL2Q = 2;
PeriphClkInitStruct.PLL2.PLL2R = 2;
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2VCIRANGE_3;
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2VCOWIDE;
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
PeriphClkInitStruct.AdcClockSelection = RCC_ADCCLKSOURCE_PLL2;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
}
/* USER CODE BEGIN 4 */ /* USER CODE BEGIN 4 */
/* USER CODE END 4 */ /* USER CODE END 4 */

View File

@@ -223,7 +223,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
__HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx); __HAL_LINKDMA(spiHandle,hdmarx,hdma_spi1_rx);
/* SPI1_TX Init */ /* SPI1_TX Init */
hdma_spi1_tx.Instance = DMA1_Stream2; hdma_spi1_tx.Instance = DMA1_Stream3;
hdma_spi1_tx.Init.Request = DMA_REQUEST_SPI1_TX; hdma_spi1_tx.Init.Request = DMA_REQUEST_SPI1_TX;
hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
@@ -288,7 +288,7 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
/* SPI2 DMA Init */ /* SPI2 DMA Init */
/* SPI2_RX Init */ /* SPI2_RX Init */
hdma_spi2_rx.Instance = DMA1_Stream3; hdma_spi2_rx.Instance = DMA1_Stream0;
hdma_spi2_rx.Init.Request = DMA_REQUEST_SPI2_RX; hdma_spi2_rx.Init.Request = DMA_REQUEST_SPI2_RX;
hdma_spi2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_spi2_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_spi2_rx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_spi2_rx.Init.PeriphInc = DMA_PINC_DISABLE;

View File

@@ -56,6 +56,8 @@
/* External variables --------------------------------------------------------*/ /* External variables --------------------------------------------------------*/
extern PCD_HandleTypeDef hpcd_USB_OTG_HS; extern PCD_HandleTypeDef hpcd_USB_OTG_HS;
extern DMA_HandleTypeDef hdma_adc1;
extern ADC_HandleTypeDef hadc1;
extern FDCAN_HandleTypeDef hfdcan1; extern FDCAN_HandleTypeDef hfdcan1;
extern FDCAN_HandleTypeDef hfdcan2; extern FDCAN_HandleTypeDef hfdcan2;
extern FDCAN_HandleTypeDef hfdcan3; extern FDCAN_HandleTypeDef hfdcan3;
@@ -185,6 +187,20 @@ void DebugMon_Handler(void)
/* please refer to the startup file (startup_stm32h7xx.s). */ /* please refer to the startup file (startup_stm32h7xx.s). */
/******************************************************************************/ /******************************************************************************/
/**
* @brief This function handles DMA1 stream0 global interrupt.
*/
void DMA1_Stream0_IRQHandler(void)
{
/* USER CODE BEGIN DMA1_Stream0_IRQn 0 */
/* USER CODE END DMA1_Stream0_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_spi2_rx);
/* USER CODE BEGIN DMA1_Stream0_IRQn 1 */
/* USER CODE END DMA1_Stream0_IRQn 1 */
}
/** /**
* @brief This function handles DMA1 stream1 global interrupt. * @brief This function handles DMA1 stream1 global interrupt.
*/ */
@@ -207,7 +223,7 @@ void DMA1_Stream2_IRQHandler(void)
/* USER CODE BEGIN DMA1_Stream2_IRQn 0 */ /* USER CODE BEGIN DMA1_Stream2_IRQn 0 */
/* USER CODE END DMA1_Stream2_IRQn 0 */ /* USER CODE END DMA1_Stream2_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_spi1_tx); HAL_DMA_IRQHandler(&hdma_adc1);
/* USER CODE BEGIN DMA1_Stream2_IRQn 1 */ /* USER CODE BEGIN DMA1_Stream2_IRQn 1 */
/* USER CODE END DMA1_Stream2_IRQn 1 */ /* USER CODE END DMA1_Stream2_IRQn 1 */
@@ -221,7 +237,7 @@ void DMA1_Stream3_IRQHandler(void)
/* USER CODE BEGIN DMA1_Stream3_IRQn 0 */ /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */
/* USER CODE END DMA1_Stream3_IRQn 0 */ /* USER CODE END DMA1_Stream3_IRQn 0 */
HAL_DMA_IRQHandler(&hdma_spi2_rx); HAL_DMA_IRQHandler(&hdma_spi1_tx);
/* USER CODE BEGIN DMA1_Stream3_IRQn 1 */ /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */
/* USER CODE END DMA1_Stream3_IRQn 1 */ /* USER CODE END DMA1_Stream3_IRQn 1 */
@@ -269,6 +285,20 @@ void DMA1_Stream6_IRQHandler(void)
/* USER CODE END DMA1_Stream6_IRQn 1 */ /* USER CODE END DMA1_Stream6_IRQn 1 */
} }
/**
* @brief This function handles ADC1 and ADC2 global interrupts.
*/
void ADC_IRQHandler(void)
{
/* USER CODE BEGIN ADC_IRQn 0 */
/* USER CODE END ADC_IRQn 0 */
HAL_ADC_IRQHandler(&hadc1);
/* USER CODE BEGIN ADC_IRQn 1 */
/* USER CODE END ADC_IRQn 1 */
}
/** /**
* @brief This function handles FDCAN1 interrupt 0. * @brief This function handles FDCAN1 interrupt 0.
*/ */

View File

@@ -1,6 +1,24 @@
#MicroXplorer Configuration settings - do not modify #MicroXplorer Configuration settings - do not modify
ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_4
ADC1.Channel-1\#ChannelRegularConversion=ADC_CHANNEL_4
ADC1.ClockPrescaler=ADC_CLOCK_ASYNC_DIV64
ADC1.ContinuousConvMode=ENABLE
ADC1.ConversionDataManagement=ADC_CONVERSIONDATA_DMA_CIRCULAR
ADC1.IPParameters=Rank-0\#ChannelRegularConversion,master,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler,ConversionDataManagement,ContinuousConvMode,Rank-1\#ChannelRegularConversion,Channel-1\#ChannelRegularConversion,SamplingTime-1\#ChannelRegularConversion,OffsetNumber-1\#ChannelRegularConversion,OffsetSignedSaturation-1\#ChannelRegularConversion,NbrOfConversion
ADC1.NbrOfConversion=2
ADC1.NbrOfConversionFlag=1
ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC1.OffsetNumber-1\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC1.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
ADC1.OffsetSignedSaturation-1\#ChannelRegularConversion=DISABLE
ADC1.Rank-0\#ChannelRegularConversion=1
ADC1.Rank-1\#ChannelRegularConversion=2
ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.SamplingTime-1\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
ADC1.master=1
ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR ADC3.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_TEMPSENSOR
ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSign-0\#ChannelRegularConversion,NbrOfConversionFlag ADC3.ClockPrescaler=ADC_CLOCK_ASYNC_DIV64
ADC3.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSign-0\#ChannelRegularConversion,NbrOfConversionFlag,ClockPrescaler
ADC3.NbrOfConversionFlag=1 ADC3.NbrOfConversionFlag=1
ADC3.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE ADC3.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC3.OffsetSign-0\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE ADC3.OffsetSign-0\#ChannelRegularConversion=ADC3_OFFSET_SIGN_NEGATIVE
@@ -26,12 +44,31 @@ CRC.DefaultInitValueUse=DEFAULT_INIT_VALUE_DISABLE
CRC.DefaultPolynomialUse=DEFAULT_POLYNOMIAL_DISABLE CRC.DefaultPolynomialUse=DEFAULT_POLYNOMIAL_DISABLE
CRC.IPParameters=InputDataInversionMode,DefaultInitValueUse,DefaultPolynomialUse,CRCLength CRC.IPParameters=InputDataInversionMode,DefaultInitValueUse,DefaultPolynomialUse,CRCLength
CRC.InputDataInversionMode=CRC_INPUTDATA_INVERSION_BYTE CRC.InputDataInversionMode=CRC_INPUTDATA_INVERSION_BYTE
Dma.ADC1.14.Direction=DMA_PERIPH_TO_MEMORY
Dma.ADC1.14.EventEnable=DISABLE
Dma.ADC1.14.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.ADC1.14.Instance=DMA1_Stream2
Dma.ADC1.14.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
Dma.ADC1.14.MemInc=DMA_MINC_ENABLE
Dma.ADC1.14.Mode=DMA_CIRCULAR
Dma.ADC1.14.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
Dma.ADC1.14.PeriphInc=DMA_PINC_DISABLE
Dma.ADC1.14.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.ADC1.14.Priority=DMA_PRIORITY_LOW
Dma.ADC1.14.RequestNumber=1
Dma.ADC1.14.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.ADC1.14.SignalID=NONE
Dma.ADC1.14.SyncEnable=DISABLE
Dma.ADC1.14.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.ADC1.14.SyncRequestNumber=1
Dma.ADC1.14.SyncSignalID=NONE
Dma.Request0=USART10_RX Dma.Request0=USART10_RX
Dma.Request1=USART10_TX Dma.Request1=USART10_TX
Dma.Request10=USART3_TX Dma.Request10=USART3_TX
Dma.Request11=SPI1_RX Dma.Request11=SPI1_RX
Dma.Request12=SPI1_TX Dma.Request12=SPI1_TX
Dma.Request13=UART5_RX Dma.Request13=UART5_RX
Dma.Request14=ADC1
Dma.Request2=SPI2_RX Dma.Request2=SPI2_RX
Dma.Request3=SPI2_TX Dma.Request3=SPI2_TX
Dma.Request4=UART7_RX Dma.Request4=UART7_RX
@@ -40,7 +77,7 @@ Dma.Request6=USART1_TX
Dma.Request7=USART2_RX Dma.Request7=USART2_RX
Dma.Request8=USART2_TX Dma.Request8=USART2_TX
Dma.Request9=USART3_RX Dma.Request9=USART3_RX
Dma.RequestsNb=14 Dma.RequestsNb=15
Dma.SPI1_RX.11.Direction=DMA_PERIPH_TO_MEMORY Dma.SPI1_RX.11.Direction=DMA_PERIPH_TO_MEMORY
Dma.SPI1_RX.11.EventEnable=DISABLE Dma.SPI1_RX.11.EventEnable=DISABLE
Dma.SPI1_RX.11.FIFOMode=DMA_FIFOMODE_DISABLE Dma.SPI1_RX.11.FIFOMode=DMA_FIFOMODE_DISABLE
@@ -62,7 +99,7 @@ Dma.SPI1_RX.11.SyncSignalID=NONE
Dma.SPI1_TX.12.Direction=DMA_MEMORY_TO_PERIPH Dma.SPI1_TX.12.Direction=DMA_MEMORY_TO_PERIPH
Dma.SPI1_TX.12.EventEnable=DISABLE Dma.SPI1_TX.12.EventEnable=DISABLE
Dma.SPI1_TX.12.FIFOMode=DMA_FIFOMODE_DISABLE Dma.SPI1_TX.12.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.SPI1_TX.12.Instance=DMA1_Stream2 Dma.SPI1_TX.12.Instance=DMA1_Stream3
Dma.SPI1_TX.12.MemDataAlignment=DMA_MDATAALIGN_HALFWORD Dma.SPI1_TX.12.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
Dma.SPI1_TX.12.MemInc=DMA_MINC_ENABLE Dma.SPI1_TX.12.MemInc=DMA_MINC_ENABLE
Dma.SPI1_TX.12.Mode=DMA_NORMAL Dma.SPI1_TX.12.Mode=DMA_NORMAL
@@ -80,7 +117,7 @@ Dma.SPI1_TX.12.SyncSignalID=NONE
Dma.SPI2_RX.2.Direction=DMA_PERIPH_TO_MEMORY Dma.SPI2_RX.2.Direction=DMA_PERIPH_TO_MEMORY
Dma.SPI2_RX.2.EventEnable=DISABLE Dma.SPI2_RX.2.EventEnable=DISABLE
Dma.SPI2_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE Dma.SPI2_RX.2.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.SPI2_RX.2.Instance=DMA1_Stream3 Dma.SPI2_RX.2.Instance=DMA1_Stream0
Dma.SPI2_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE Dma.SPI2_RX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.SPI2_RX.2.MemInc=DMA_MINC_ENABLE Dma.SPI2_RX.2.MemInc=DMA_MINC_ENABLE
Dma.SPI2_RX.2.Mode=DMA_NORMAL Dma.SPI2_RX.2.Mode=DMA_NORMAL
@@ -414,33 +451,34 @@ MMTAppRegionsCount=6
MMTConfigApplied=false MMTConfigApplied=false
Mcu.CPN=STM32H723VGT6 Mcu.CPN=STM32H723VGT6
Mcu.Family=STM32H7 Mcu.Family=STM32H7
Mcu.IP0=ADC3 Mcu.IP0=ADC1
Mcu.IP1=CORTEX_M7 Mcu.IP1=ADC3
Mcu.IP10=RCC Mcu.IP10=NVIC
Mcu.IP11=SPI1 Mcu.IP11=RCC
Mcu.IP12=SPI2 Mcu.IP12=SPI1
Mcu.IP13=SPI6 Mcu.IP13=SPI2
Mcu.IP14=SYS Mcu.IP14=SPI6
Mcu.IP15=TIM1 Mcu.IP15=SYS
Mcu.IP16=TIM3 Mcu.IP16=TIM1
Mcu.IP17=TIM12 Mcu.IP17=TIM3
Mcu.IP18=UART5 Mcu.IP18=TIM12
Mcu.IP19=UART7 Mcu.IP19=UART5
Mcu.IP2=CRC Mcu.IP2=CORTEX_M7
Mcu.IP20=USART1 Mcu.IP20=UART7
Mcu.IP21=USART2 Mcu.IP21=USART1
Mcu.IP22=USART3 Mcu.IP22=USART2
Mcu.IP23=USART10 Mcu.IP23=USART3
Mcu.IP24=USB_DEVICE Mcu.IP24=USART10
Mcu.IP25=USB_OTG_HS Mcu.IP25=USB_DEVICE
Mcu.IP3=DMA Mcu.IP26=USB_OTG_HS
Mcu.IP4=FDCAN1 Mcu.IP3=CRC
Mcu.IP5=FDCAN2 Mcu.IP4=DMA
Mcu.IP6=FDCAN3 Mcu.IP5=FDCAN1
Mcu.IP7=FREERTOS Mcu.IP6=FDCAN2
Mcu.IP8=MEMORYMAP Mcu.IP7=FDCAN3
Mcu.IP9=NVIC Mcu.IP8=FREERTOS
Mcu.IPNb=26 Mcu.IP9=MEMORYMAP
Mcu.IPNb=27
Mcu.Name=STM32H723VGTx Mcu.Name=STM32H723VGTx
Mcu.Package=LQFP100 Mcu.Package=LQFP100
Mcu.Pin0=PE2 Mcu.Pin0=PE2
@@ -450,67 +488,70 @@ Mcu.Pin11=PA2
Mcu.Pin12=PA5 Mcu.Pin12=PA5
Mcu.Pin13=PA6 Mcu.Pin13=PA6
Mcu.Pin14=PA7 Mcu.Pin14=PA7
Mcu.Pin15=PB1 Mcu.Pin15=PC4
Mcu.Pin16=PE7 Mcu.Pin16=PB1
Mcu.Pin17=PE8 Mcu.Pin17=PE7
Mcu.Pin18=PE9 Mcu.Pin18=PE8
Mcu.Pin19=PE10 Mcu.Pin19=PE9
Mcu.Pin2=PC14-OSC32_IN Mcu.Pin2=PC14-OSC32_IN
Mcu.Pin20=PE12 Mcu.Pin20=PE10
Mcu.Pin21=PE13 Mcu.Pin21=PE12
Mcu.Pin22=PE15 Mcu.Pin22=PE13
Mcu.Pin23=PB10 Mcu.Pin23=PE15
Mcu.Pin24=PB11 Mcu.Pin24=PB10
Mcu.Pin25=PB13 Mcu.Pin25=PB11
Mcu.Pin26=PB15 Mcu.Pin26=PB13
Mcu.Pin27=PD8 Mcu.Pin27=PB15
Mcu.Pin28=PD9 Mcu.Pin28=PD8
Mcu.Pin29=PD10 Mcu.Pin29=PD9
Mcu.Pin3=PC15-OSC32_OUT Mcu.Pin3=PC15-OSC32_OUT
Mcu.Pin30=PD12 Mcu.Pin30=PD10
Mcu.Pin31=PD13 Mcu.Pin31=PD12
Mcu.Pin32=PA8 Mcu.Pin32=PD13
Mcu.Pin33=PA9 Mcu.Pin33=PA8
Mcu.Pin34=PA10 Mcu.Pin34=PA9
Mcu.Pin35=PA11 Mcu.Pin35=PA10
Mcu.Pin36=PA12 Mcu.Pin36=PA11
Mcu.Pin37=PC10 Mcu.Pin37=PA12
Mcu.Pin38=PC11 Mcu.Pin38=PC10
Mcu.Pin39=PC12 Mcu.Pin39=PC11
Mcu.Pin4=PH0-OSC_IN Mcu.Pin4=PH0-OSC_IN
Mcu.Pin40=PD0 Mcu.Pin40=PC12
Mcu.Pin41=PD1 Mcu.Pin41=PD0
Mcu.Pin42=PD2 Mcu.Pin42=PD1
Mcu.Pin43=PD4 Mcu.Pin43=PD2
Mcu.Pin44=PD5 Mcu.Pin44=PD4
Mcu.Pin45=PD6 Mcu.Pin45=PD5
Mcu.Pin46=PD7 Mcu.Pin46=PD6
Mcu.Pin47=PB3(JTDO/TRACESWO) Mcu.Pin47=PD7
Mcu.Pin48=PB4(NJTRST) Mcu.Pin48=PB3(JTDO/TRACESWO)
Mcu.Pin49=PB5 Mcu.Pin49=PB4(NJTRST)
Mcu.Pin5=PH1-OSC_OUT Mcu.Pin5=PH1-OSC_OUT
Mcu.Pin50=PB6 Mcu.Pin50=PB5
Mcu.Pin51=VP_ADC3_TempSens_Input Mcu.Pin51=PB6
Mcu.Pin52=VP_CRC_VS_CRC Mcu.Pin52=VP_ADC3_TempSens_Input
Mcu.Pin53=VP_FREERTOS_VS_CMSIS_V2 Mcu.Pin53=VP_CRC_VS_CRC
Mcu.Pin54=VP_SYS_VS_tim23 Mcu.Pin54=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin55=VP_TIM1_VS_ClockSourceINT Mcu.Pin55=VP_SYS_VS_tim23
Mcu.Pin56=VP_TIM1_VS_no_output3 Mcu.Pin56=VP_TIM1_VS_ClockSourceINT
Mcu.Pin57=VP_USB_DEVICE_VS_USB_DEVICE_CDC_HS Mcu.Pin57=VP_TIM1_VS_no_output3
Mcu.Pin58=VP_MEMORYMAP_VS_MEMORYMAP Mcu.Pin58=VP_USB_DEVICE_VS_USB_DEVICE_CDC_HS
Mcu.Pin59=VP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.4.0_1.4.0 Mcu.Pin59=VP_MEMORYMAP_VS_MEMORYMAP
Mcu.Pin6=PC0 Mcu.Pin6=PC0
Mcu.Pin60=VP_STMicroelectronics.X-CUBE-ALGOBUILD_VS_DSPOoLibraryJjLibrary_1.4.0_1.4.0
Mcu.Pin7=PC1 Mcu.Pin7=PC1
Mcu.Pin8=PC2_C Mcu.Pin8=PC2_C
Mcu.Pin9=PC3_C Mcu.Pin9=PC3_C
Mcu.PinsNb=60 Mcu.PinsNb=61
Mcu.ThirdParty0=STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0 Mcu.ThirdParty0=STMicroelectronics.X-CUBE-ALGOBUILD.1.4.0
Mcu.ThirdPartyNb=1 Mcu.ThirdPartyNb=1
Mcu.UserConstants= Mcu.UserConstants=
Mcu.UserName=STM32H723VGTx Mcu.UserName=STM32H723VGTx
MxCube.Version=6.15.0 MxCube.Version=6.15.0
MxDb.Version=DB.6.0.150 MxDb.Version=DB.6.0.150
NVIC.ADC_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.DMA1_Stream0_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA1_Stream3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream3_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
@@ -651,6 +692,8 @@ PC3_C.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC3_C.Locked=true PC3_C.Locked=true
PC3_C.PinState=GPIO_PIN_SET PC3_C.PinState=GPIO_PIN_SET
PC3_C.Signal=GPIO_Output PC3_C.Signal=GPIO_Output
PC4.Locked=true
PC4.Signal=ADCx_INP4
PD0.Mode=FDCAN_Activate PD0.Mode=FDCAN_Activate
PD0.Signal=FDCAN1_RX PD0.Signal=FDCAN1_RX
PD1.Mode=FDCAN_Activate PD1.Mode=FDCAN_Activate
@@ -756,7 +799,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath= ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath= ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN2_Init-FDCAN2-false-HAL-true,5-MX_FDCAN3_Init-FDCAN3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,8-MX_FDCAN1_Init-FDCAN1-false-HAL-true,9-MX_USART10_UART_Init-USART10-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_TIM12_Init-TIM12-false-HAL-true,12-MX_UART7_Init-UART7-false-HAL-true,13-MX_TIM1_Init-TIM1-false-HAL-true,14-MX_USART1_UART_Init-USART1-false-HAL-true,15-MX_ADC3_Init-ADC3-false-HAL-true,16-MX_USART2_UART_Init-USART2-false-HAL-true,17-MX_USART3_UART_Init-USART3-false-HAL-true,18-MX_SPI1_Init-SPI1-false-HAL-true,19-MX_UART5_Init-UART5-false-HAL-true,20-MX_TIM3_Init-TIM3-false-HAL-true,21-MX_SPI6_Init-SPI6-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN2_Init-FDCAN2-false-HAL-true,5-MX_FDCAN3_Init-FDCAN3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,8-MX_FDCAN1_Init-FDCAN1-false-HAL-true,9-MX_USART10_UART_Init-USART10-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_TIM12_Init-TIM12-false-HAL-true,12-MX_UART7_Init-UART7-false-HAL-true,13-MX_TIM1_Init-TIM1-false-HAL-true,14-MX_USART1_UART_Init-USART1-false-HAL-true,15-MX_ADC3_Init-ADC3-false-HAL-true,16-MX_USART2_UART_Init-USART2-false-HAL-true,17-MX_USART3_UART_Init-USART3-false-HAL-true,18-MX_SPI1_Init-SPI1-false-HAL-true,19-MX_UART5_Init-UART5-false-HAL-true,20-MX_TIM3_Init-TIM3-false-HAL-true,21-MX_SPI6_Init-SPI6-false-HAL-true,22-MX_ADC1_Init-ADC1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=96000000 RCC.ADCFreq_Value=96000000
RCC.AHB12Freq_Value=240000000 RCC.AHB12Freq_Value=240000000
RCC.AHB4Freq_Value=240000000 RCC.AHB4Freq_Value=240000000
@@ -840,6 +883,8 @@ RCC.VCO3OutputFreq_Value=96750000
RCC.VCOInput1Freq_Value=12000000 RCC.VCOInput1Freq_Value=12000000
RCC.VCOInput2Freq_Value=12000000 RCC.VCOInput2Freq_Value=12000000
RCC.VCOInput3Freq_Value=750000 RCC.VCOInput3Freq_Value=750000
SH.ADCx_INP4.0=ADC1_INP4,IN4-Single-Ended
SH.ADCx_INP4.ConfNb=1
SH.GPXTI10.0=GPIO_EXTI10 SH.GPXTI10.0=GPIO_EXTI10
SH.GPXTI10.ConfNb=1 SH.GPXTI10.ConfNb=1
SH.GPXTI12.0=GPIO_EXTI12 SH.GPXTI12.0=GPIO_EXTI12

View File

@@ -1,5 +1,53 @@
// /* USER CODE BEGIN Header */
// Created by tuxmonkey on 2025/10/28. /**
// ******************************************************************************
* @file : bsp_adc.c
* @brief : bsp adc functions
* @author : TuxMonkey
* @date : 2025/11/22
* @version : v1.0
******************************************************************************
* @attention : Pay attention to enable the adc
******************************************************************************
*/
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "bsp_adc.h" #include "bsp_adc.h"
#include "adc.h"
/**
* @brief ADC sampling voltage array
*/
__attribute__((section (".AXI_SRAM"))) uint16_t ADC_Voltage_Val[2];
/**
* @brief Configures the ADC.
* @param None
* @retval None
*/
void BSP_ADC_Init(void)
{
HAL_ADCEx_Calibration_Start(&hadc1, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED);
HAL_ADC_Start_DMA(&hadc1, (uint32_t *) ADC_Voltage_Val, 2);
}
//------------------------------------------------------------------------------
/**
* @brief USER get current voltage.
* @param None
* @retval Voltage
*/
float USER_ADC_Voltage_Update(void)
{
float Voltage;
Voltage = (ADC_Voltage_Val[0] * 3.3f / 65535) * 11.0f;
return Voltage;
}
//------------------------------------------------------------------------------

View File

@@ -1,8 +1,34 @@
// /* USER CODE BEGIN Header */
// Created by tuxmonkey on 2025/10/28. /**
// ******************************************************************************
* @file : bsp_adc.h
* @brief : The header file of bsp_adc.h
* @author : TuxMonkey
* @date : 2025/11/22
* @version : v1.0
******************************************************************************
* @attention : Pay attention to config the clock source of the advanced TIM
******************************************************************************
*/
/* USER CODE END Header */
#ifndef TRONONEH7_SCAFFOLD_BSP_ADC_H /* Define to prevent recursive inclusion -------------------------------------*/
#define TRONONEH7_SCAFFOLD_BSP_ADC_H #ifndef BSP_ADC_H
#define BSP_ADC_H
#endif //TRONONEH7_SCAFFOLD_BSP_ADC_H #ifdef __cplusplus
extern "C"
{
#endif
/* Includes ------------------------------------------------------------------*/
#include "adc.h"
/* Externs ---------------------------------------------*/
void BSP_ADC_Init(void);
float USER_ADC_Voltage_Update(void);
#endif //BSP_ADC_H