📄 stm32f10x_adc.c
字号:
/*******************************************************************************
* 函数名称: ADC_DMACmd
* 功能描述: 使能/禁止指定的ADC DMA请求.
* 输入参数: (1)ADCx: 其中x可以是1、2或3,用来选择ADC外围模块.
* 注意: ADC2 没有 DMA 能力.
* (2)ADC DMA转移器的新状态这个参数可以是:ENABLE或DISABLE。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
/* Check the parameters 检查参数 检查参数*/
assert_param(IS_ADC_DMA_PERIPH(ADCx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the selected ADC DMA request [允许选择的ADC DMA请求]*/
ADCx->CR2 |= CR2_DMA_Set;
}
else
{
/* Disable the selected ADC DMA request [禁用选择的ADC DMA请求]*/
ADCx->CR2 &= CR2_DMA_Reset;
}
}
/*******************************************************************************
* 函数名称: ADC_ITConfig
* 功能描述: 使能/禁止指定的ADC中断.
* 输入参数: (1)ADCx: 其中x可以是1、2或3,用来选择ADC外围模块.
* (2)ADC_IT: 指定ADC中断源是使能的或禁止的.
* ADC_IT 用来使能或者禁止ADC 中断.可以使用下述值的一个或者几个值的组合:
* - ADC_IT_EOC: EOC中断屏蔽
* - ADC_IT_AWD: AWDOG中断屏蔽
* - ADC_IT_JEOC: JEOC中断屏蔽
* (3)NewState: 指定的ADC中断的新状态这个参数可以是:ENABLE或DISABLE
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_ITConfig(ADC_TypeDef* ADCx, u16 ADC_IT, FunctionalState NewState)
{
u8 itmask = 0;
/* Check the parameters [检查参数]*/
assert_param(IS_ADC_ALL_PERIPH(ADCx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
assert_param(IS_ADC_IT(ADC_IT));
/* Get the ADC IT index [取得ADC IT中断号]*/
itmask = (u8)ADC_IT;
if (NewState != DISABLE)
{
/* Enable the selected ADC interrupts [允许选择的ADC 中断]*/
ADCx->CR1 |= itmask;
}
else
{
/* Disable the selected ADC interrupts [禁用选择的ADC 中断]*/
ADCx->CR1 &= (~(u32)itmask);
}
}
/*******************************************************************************
* 函数名称: ADC_ResetCalibration
* 功能描述: 重置选中的ADC校准寄存器
* 输入参数: ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_ResetCalibration(ADC_TypeDef* ADCx)
{
/* Check the parameters [检查参数]*/
assert_param(IS_ADC_ALL_PERIPH(ADCx));
/* Resets the selected ADC calibration registers [复位选择的ADC校准寄存器]*/
ADCx->CR2 |= CR2_RSTCAL_Set;
}
/*******************************************************************************
* 函数名称: ADC_GetResetCalibrationStatus
* 功能描述: 得到选中的ADC重置校准寄存器的状态.
* 输入参数: ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* 输出参数: 无
* 返回参数: ADC重置校准寄存器的新状态(SET或RESET).
*******************************************************************************/
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx)
{
FlagStatus bitstatus = RESET;
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
/* Check the status of RSTCAL bit [检查状态位RSTCAL]*/
if ((ADCx->CR2 & CR2_RSTCAL_Set) != (u32)RESET)
{
/* RSTCAL bit is set [置位RSTCAL]*/
bitstatus = SET;
}
else
{
/* RSTCAL bit is reset [复位RSTCAL]*/
bitstatus = RESET;
}
/* Return the RSTCAL bit status [返回状态位RSTCAL]*/
return bitstatus;
}
/*******************************************************************************
* 函数名称: ADC_StartCalibration
* 功能描述: 开始选中的ADC校准过程.
* 输入参数: ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_StartCalibration(ADC_TypeDef* ADCx)
{
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
/* Enable the selected ADC calibration process [允许被选择的ADC校准过程]*/
ADCx->CR2 |= CR2_CAL_Set;
}
/*******************************************************************************
* 函数名称: ADC_GetCalibrationStatus
* 功能描述: 得到选中的ADC 校准的状态
* 输入参数: ADCx:其中x可以是1、2或3,用来选择ADC外围模块..
* 输出参数: 无
* 返回参数: ADC 校准的新状态(SET 或RESET).
*******************************************************************************/
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx)
{
FlagStatus bitstatus = RESET;
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
/* Check the status of CAL bit [检查状态位CAL]*/
if ((ADCx->CR2 & CR2_CAL_Set) != (u32)RESET)
{
/* CAL bit is set: calibration on going [CAL设置:校准开始]*/
bitstatus = SET;
}
else
{
/* CAL bit is reset: end of calibration [CAL复位:结束校准]*/
bitstatus = RESET;
}
/* Return the CAL bit status [返回状态位CAL]*/
return bitstatus;
}
/*******************************************************************************
* 函数名称: ADC_SoftwareStartConvCmd
* 功能描述: 使能/禁止选中的ADC由软件控制开始转换 .
* 输入参数: (1)ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* (2)NewState:选中的由软件发出开始信号的ADC的新状态这个参数可以是:ENABLE或DISABLE
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the selected ADC conversion on external event and start the selected
ADC conversion [允许选择的ADC转换外部事件和启动选择的ADC转换]*/
ADCx->CR2 |= CR2_EXTTRIG_SWSTART_Set;
}
else
{
/* Disable the selected ADC conversion on external event and stop the selected
ADC conversion [禁止选择的ADC转换外部事件和停止选择的ADC转换]*/
ADCx->CR2 &= CR2_EXTTRIG_SWSTART_Reset;
}
}
/*******************************************************************************
* 函数名称: ADC_GetSoftwareStartConvStatus
* 功能描述: 获得选中ADC软件开始转换状态。
* 输入参数: ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* 输出参数: 无
* 返回参数: ADC软件开始转换的新状态(SET或RESET).
*******************************************************************************/
FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx)
{
FlagStatus bitstatus = RESET;
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
/* Check the status of SWSTART bit [检查状态位SWSTART]*/
if ((ADCx->CR2 & CR2_SWSTART_Set) != (u32)RESET)
{
/* SWSTART bit is set [置位SWSTART]*/
bitstatus = SET;
}
else
{
/* SWSTART bit is reset [复位SWSTART]*/
bitstatus = RESET;
}
/* Return the SWSTART bit status [返回状态位SWSTART]*/
return bitstatus;
}
/*******************************************************************************
* 函数名称: ADC_DiscModeChannelCountConfig
* 功能描述: 配置选中的ADC常规组为非连续模式.
* 输入参数: (1)ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* (2)Number:非连续模式下常规信道计数值。该值范围为1-8。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, u8 Number)
{
u32 tmpreg1 = 0;
u32 tmpreg2 = 0;
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
assert_param(IS_ADC_REGULAR_DISC_NUMBER(Number));
/* Get the old register value [取得过去的寄存器值]*/
tmpreg1 = ADCx->CR1;
/* Clear the old discontinuous mode channel count [清除过去的不间断模式通道计数器]*/
tmpreg1 &= CR1_DISCNUM_Reset;
/* Set the discontinuous mode channel count [设置不间断模式通道计数器]*/
tmpreg2 = Number - 1;
tmpreg1 |= tmpreg2 << 13;
/* Store the new register value [存储新的寄存器值]*/
ADCx->CR1 = tmpreg1;
}
/*******************************************************************************
* 函数名称: ADC_DiscModeCmd
* 功能描述: 使能/禁止指定的ADC常规组信道的非连续模式
* 输入参数: (1)ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* (2)NewState: ADC常规组信道下非连续模式的新状态这个参数可以是:ENABLE或DISABLE。
* 输出参数: 无
* 返回参数: 无
*******************************************************************************/
void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
/* Check the parameters [检查参数] */
assert_param(IS_ADC_ALL_PERIPH(ADCx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the selected ADC regular discontinuous mode [允许选择的ADC规则间断模式]*/
ADCx->CR1 |= CR1_DISCEN_Set;
}
else
{
/* Disable the selected ADC regular discontinuous mode [禁止选择的ADC规则间断模式]*/
ADCx->CR1 &= CR1_DISCEN_Reset;
}
}
/*******************************************************************************
* 函数名称: ADC_RegularChannelConfig
* 功能描述: 为选中的ADC常规组信道配置相关的音序器(sequencer)等级和采样时间。
* 输入参数: (1)ADCx:其中x可以是1、2或3,用来选择ADC外围模块.
* (2)ADC_Channel:需要配置的ADC信道
* ADC_Channel 可能的取值:
* - ADC_Channel_0: ADC信道0被选择
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -