This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
CMS3in1/1.Cabin/4.MISC/CMS_Collector/VM_App/VM_ADC.c

103 lines
3.8 KiB
C
Raw Normal View History

#include "VM_ADC.h"
#include "delay.h"
ADC_HandleTypeDef ADC2_Handler;//ADC<44><43><EFBFBD><EFBFBD>
ADC_HandleTypeDef ADC3_Handler;//ADC<44><43><EFBFBD><EFBFBD>
//<2F><>ʼ<EFBFBD><CABC>ADC2
//ch: ADC_channels
//ͨ<><CDA8>ֵ 0~16ȡֵ<C8A1><D6B5>ΧΪ<CEA7><CEAA>ADC_CHANNEL_0~ADC_CHANNEL_16
void ADC2_Init(void)
{
ADC_ChannelConfTypeDef sConfig = {0};
ADC2_Handler.Instance=ADC2;
ADC2_Handler.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4; //4<><34>Ƶ<EFBFBD><C6B5>ADCCLK=PCLK2/4=90/4=22.5MHZ
ADC2_Handler.Init.Resolution=ADC_RESOLUTION_12B; //12λģʽ
ADC2_Handler.Init.DataAlign=ADC_DATAALIGN_RIGHT; //<2F>Ҷ<EFBFBD><D2B6><EFBFBD>
ADC2_Handler.Init.ScanConvMode=DISABLE; //<2F><>ɨ<EFBFBD><C9A8>ģʽ
ADC2_Handler.Init.EOCSelection=DISABLE; //<2F>ر<EFBFBD>EOC<4F>ж<EFBFBD>
ADC2_Handler.Init.ContinuousConvMode=DISABLE; //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
ADC2_Handler.Init.NbrOfConversion=1; //1<><31>ת<EFBFBD><D7AA><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ҳ<><D2B2><EFBFBD><EFBFBD>ֻת<D6BB><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
ADC2_Handler.Init.DiscontinuousConvMode=DISABLE; //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
ADC2_Handler.Init.NbrOfDiscConversion=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>Ϊ0
ADC2_Handler.Init.ExternalTrigConv=ADC_SOFTWARE_START; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ADC2_Handler.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ADC2_Handler.Init.DMAContinuousRequests=DISABLE; //<2F>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
HAL_ADC_Init(&ADC2_Handler); //<2F><>ʼ<EFBFBD><CABC>
sConfig.Channel = ADC_CHANNEL_11;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
HAL_ADC_ConfigChannel(&ADC2_Handler, &sConfig);
}
//<2F><>ʼ<EFBFBD><CABC>ADC3
//ch: ADC_channels
//ͨ<><CDA8>ֵ 0~16ȡֵ<C8A1><D6B5>ΧΪ<CEA7><CEAA>ADC_CHANNEL_0~ADC_CHANNEL_16
void ADC3_Init(void)
{
ADC_ChannelConfTypeDef sConfig = {0};
ADC3_Handler.Instance=ADC3;
ADC3_Handler.Init.ClockPrescaler=ADC_CLOCK_SYNC_PCLK_DIV4; //4<><34>Ƶ<EFBFBD><C6B5>ADCCLK=PCLK2/4=90/4=22.5MHZ
ADC3_Handler.Init.Resolution=ADC_RESOLUTION_12B; //12λģʽ
ADC3_Handler.Init.DataAlign=ADC_DATAALIGN_RIGHT; //<2F>Ҷ<EFBFBD><D2B6><EFBFBD>
ADC3_Handler.Init.ScanConvMode=DISABLE; //<2F><>ɨ<EFBFBD><C9A8>ģʽ
ADC3_Handler.Init.EOCSelection=DISABLE; //<2F>ر<EFBFBD>EOC<4F>ж<EFBFBD>
ADC3_Handler.Init.ContinuousConvMode=DISABLE; //<2F>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
ADC3_Handler.Init.NbrOfConversion=1; //1<><31>ת<EFBFBD><D7AA><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ҳ<><D2B2><EFBFBD><EFBFBD>ֻת<D6BB><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
ADC3_Handler.Init.DiscontinuousConvMode=DISABLE; //<2F><>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
ADC3_Handler.Init.NbrOfDiscConversion=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>Ϊ0
ADC3_Handler.Init.ExternalTrigConv=ADC_SOFTWARE_START; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ADC3_Handler.Init.ExternalTrigConvEdge=ADC_EXTERNALTRIGCONVEDGE_NONE;//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ADC3_Handler.Init.DMAContinuousRequests=DISABLE; //<2F>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD>
HAL_ADC_Init(&ADC3_Handler); //<2F><>ʼ<EFBFBD><CABC>
sConfig.Channel = ADC_CHANNEL_8;
sConfig.Rank = 1;
sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
HAL_ADC_ConfigChannel(&ADC3_Handler, &sConfig);
}
//ADC<44>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD><CAB9>
//<2F>˺<EFBFBD><CBBA><EFBFBD><EFBFBD>ᱻHAL_ADC_Init()<29><><EFBFBD><EFBFBD>
//hadc:ADC<44><43><EFBFBD><EFBFBD>
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
{
GPIO_InitTypeDef GPIO_Initure;
if(hadc == &ADC2_Handler)
{
__HAL_RCC_ADC2_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_Initure.Pin=GPIO_PIN_1; //PC1
GPIO_Initure.Mode=GPIO_MODE_ANALOG; //ģ<><C4A3>
GPIO_Initure.Pull=GPIO_NOPULL; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HAL_GPIO_Init(GPIOC,&GPIO_Initure);
}
if(hadc == &ADC3_Handler)
{
__HAL_RCC_ADC3_CLK_ENABLE();
__HAL_RCC_GPIOF_CLK_ENABLE();
GPIO_Initure.Pin=GPIO_PIN_10; //PF8
GPIO_Initure.Mode=GPIO_MODE_ANALOG; //ģ<><C4A3>
GPIO_Initure.Pull=GPIO_NOPULL; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HAL_GPIO_Init(GPIOF,&GPIO_Initure);
}
}
u32 Get_Adc_Value(ADC_HandleTypeDef* hadc)
{
u32 temp_val=0;
HAL_ADC_Start(hadc);
HAL_ADC_PollForConversion(hadc,10);
temp_val = HAL_ADC_GetValue(hadc);
return temp_val;
}