136 lines
3.6 KiB
C
136 lines
3.6 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @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 */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|