CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Source/ciu32l051_std_adc.c

136 lines
3.6 KiB
C
Raw Normal View History

/************************************************************************************************/
/**
* @file ciu32l051_std_adc.c
* @author MCU Ecosystem Development Team
* @brief ADC STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ʵ<EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õȹ<EFBFBD><EFBFBD><EFBFBD>API<EFBFBD><EFBFBD>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @addtogroup ADC
* @{
*
*/
/************************************************************************************************/
/*-------------------------------------------includes-------------------------------------------*/
#include "ciu32l051_std.h"
#ifdef STD_ADC_PERIPHERAL_USED
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @addtogroup ADC_External_Functions
* @{
*
*/
/************************************************************************************************/
/**
* @brief ADC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* @param adc_init_param ADC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD>ADCʱ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ʱ<EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>std_adc_init<EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC<EFBFBD>ʱ<EFBFBD><EFBFBD>Դ
* @retval <EFBFBD><EFBFBD>
*/
void std_adc_init(std_adc_init_t *adc_init_param)
{
/* ʱ<><CAB1>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> */
std_adc_clock_source_config(adc_init_param->clock_src);
/* <20>첽ʱ<ECB2BD>ӷ<EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD> */
if(adc_init_param->clock_src == ADC_ASYNC_CLK_KCLK)
{
std_adc_asynchronous_clock_config(adc_init_param->clock_presc);
}
if(adc_init_param->trigger_edge != ADC_TRIG_SW)
{
/* <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>Դ */
std_adc_external_trig_source_config(adc_init_param->trigger_source);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
std_adc_trig_edge_config(adc_init_param->trigger_edge);
}
else
{
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ */
std_adc_trig_edge_config(adc_init_param->trigger_edge);
}
/* ת<><D7AA>ģʽ<C4A3><CABD><EFBFBD><EFBFBD> */
std_adc_conversion_mode_config(adc_init_param->conver_mode);
/* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD> */
std_adc_sampt1_time_config(adc_init_param->sampt1);
/* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD> */
std_adc_sampt2_time_config(adc_init_param->sampt2);
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
std_adc_ovrn_mode_config(adc_init_param->overrun_mode);
/* ɨ<><EFBFBD><E8B7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
std_adc_scan_direction_config(adc_init_param->scan_dir);
}
/**
* @brief ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* @param adc_init_struct ADC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
void std_adc_struct_init(std_adc_init_t *adc_init_struct)
{
adc_init_struct->clock_src = ADC_SYNC_CLK_PCLK_DIV1;
adc_init_struct->clock_presc = ADC_ASYNC_CLK_DIV1;
adc_init_struct->conver_mode = ADC_SINGLE_CONVER_MODE;
adc_init_struct->overrun_mode = ADC_OVRN_MODE_OVERWRITTEN;
adc_init_struct->sampt1 = ADC_SAMPTIME_3CYCLES;
adc_init_struct->sampt2 = ADC_SAMPTIME_3CYCLES;
adc_init_struct->scan_dir = ADC_SCAN_DIR_FORWARD;
adc_init_struct->trigger_edge = ADC_TRIG_SW;
adc_init_struct->trigger_source = ADC_EXTRIG_EXTI11;
}
/**
* @brief ADCȥ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* @note ִ<EFBFBD><EFBFBD>ȥ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>ǰӦֹͣת<EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
void std_adc_deinit(void)
{
/* <20><>ֹADC */
std_adc_disable();
/* <20><>λADC<44><43><EFBFBD><EFBFBD> */
std_rcc_apb2_reset(RCC_PERIPH_RESET_ADC);
/* <20><>ֹADC<44><43><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
std_rcc_apb2_clk_disable(RCC_PERIPH_CLK_ADC);
}
/**
* @}
*/
#endif /* STD_ADC_PERIPHERAL_USED */
/**
* @}
*/
/**
* @}
*/