103 lines
3.8 KiB
C
103 lines
3.8 KiB
C
![]() |
#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;
|
|||
|
}
|