单片机学习!
目录
1. RCC_ADCCLKConfig 函数
2. ADC_DeInit 函数
3. ADC_Init 函数
4. ADC_StructInit 函数
5. ADC_Cmd 函数
6. ADC_DMACmd 函数
7. ADC_ITConfig 函数
8. 用于校准的函数
8.1 ADC_ResetCalibration 函数
8.2 ADC_GetResetCalibrationStatus 函数
8.3 ADC_StartCalibration 函数
8.4 ADC_GetCalibrationStatus 函数
9. ADC_SoftwareStartConvCmd 函数
10. ADC_GetSoftwareStartConvStatus 函数
11. ADC_GetFlagStatus 函数
12. 配置间断模式的函数
12.1 ADC_DiscModeChannelCountConfig 函数
12.2 ADC_DiscModeCmd 函数
13. ADC_RegularChannelConfig 函数
14. ADC_ExternalTrigConvCmd 函数
15. ADC_GetConversionValue 函数
16. 对模拟看门狗进行配置的函数
16.1 ADC_AnalogWatchdogCmd 函数
16.2 ADC_AnalogWatchdogThresholdsConfig 函数
16.3 ADC_AnalogWatchdogSingleChannelConfig 函数
17. ADC_TempSensorVrefintCmd 函数
18. 获取/清除
18.1 ADC_GetFlagStatus 函数
18.2 ADC_ClearFlag 函数
18.3 ADC_GetITStatus 函数
18.4 ADC_ClearITPendingBit 函数
1. RCC_ADCCLKConfig 函数
函数用来配置ADCCLK分频器的,可以对APB2的72MHz时钟选择2、4、6、8分频,输入到ADCCLK.
2. ADC_DeInit 函数
函数用于恢复缺省配置。
3. ADC_Init 函数
函数用于ADC初始化。
ADC_Mode 设置 ADC 工作在独立或者双 ADC 模式。
ADC_ScanConvMode 规定了模数转换工作在扫描模式(多通道)还是单次(单通道)模式。可以设置这个参数为 ENABLE 或者 DISABLE。
ADC_ContinuousConvMode 规定了模数转换工作在连续还是单次模式。可以设置这个参数为 ENABLE 或者 DISABLE。
ADC_ExternalTrigConv定义了使用外部触发来启动规则通道的模数转换。
ADC_DataAlign 规定了 ADC 数据向左边对齐还是向右边对齐。
ADC_NbrOfChannel 规定了顺序进行规则转换的 ADC 通道的数目。这个数目的取值范围是 1 到 16。
注:为了能够正确地配置每一个 ADC 通道,用户在调用 ADC_Init()之后,必须调用ADC_ChannelConfig函数来配置每个所使用通道的转换次序和采样时间。
4. ADC_StructInit 函数
结构体初始化。
5. ADC_Cmd 函数
用于给ADC上电的,也就是ADC的开关控制。
6. ADC_DMACmd 函数
用于开启DMA输出信号的。如果使用DMA转运数据,就需要调用这个函数。
7. ADC_ITConfig 函数
中断输出控制。
ADC_IT 可以用来使能或者失能 ADC 中断。
8. 用于校准的函数
在ADC初始化完成之后,依次调用就行了。
8.1 ADC_ResetCalibration 函数
复位校准。
8.2 ADC_GetResetCalibrationStatus 函数
获取复位校准状态。
8.3 ADC_StartCalibration 函数
开始校准。
8.4 ADC_GetCalibrationStatus 函数
获取开始校准状态
函数代码:
/**
* @brief Gets the selected ADC calibration status.
* @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
* @retval The new state of ADC calibration (SET or 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 */
if ((ADCx->CR2 & CR2_CAL_Set) != (uint32_t)RESET)
{
/* CAL bit is set: calibration on going */
bitstatus = SET;
}
else
{
/* CAL bit is reset: end of calibration */
bitstatus = RESET;
}
/* Return the CAL bit status */
return bitstatus;
}
9. ADC_SoftwareStartConvCmd 函数
ADC软件开始转换控制函数用于软件触发的函数,调用一下就能软件触发转换了。
10. ADC_GetSoftwareStartConvStatus 函数
ADC获取软件开始转换状态,调用这个函数不可以判断转换是否已经结束。
这个函数是用来获取CR2的SWSTART这一位的,对照芯片手册寄存器查找,CR2的SWSTART这一位作用是:开始转换规则通道,由软件设置该位以启动转换,转换开始后硬件马上清除此位。以此分析,这个函数就是给SWSTART位置1,以开始转换的。这个函数是返回SWSTART的状态,由于SWSTART位在转换后立刻就清零了,所以这个函数的返回值跟转换是否结束毫无关系。
11. ADC_GetFlagStatus 函数
用于知道ADC转换是否结束。
获取标志位状态,参数给EOC的标志位,判断EOC标志位是不是置1了。如果转换结束,EOC标志位置1,然后调用这个函数,判断标志位,这样就可以正确的判断转换是否结束。
12. 配置间断模式的函数
12.1 ADC_DiscModeChannelCountConfig 函数
函数用于设置每隔几个通道间断一次。
12.2 ADC_DiscModeCmd 函数
函数用于设置是否启用间断模式。
13. ADC_RegularChannelConfig 函数
ADC规则组通道配置,函数用于给序列的每个位置填写指定的通道。也就是填写点菜菜单的过程。
- 第一个参数:ADCx,指定ADC通道
- 第二个参数:ADC_Channel,需要指定的通道
- 第三个参数:Rank,序列几的位置
- 第四个参数:ADC_SampleTime,指定通道的采样时间
ADC_Channel 指定了通过调用函数 ADC_RegularChannelConfig 来设置的 ADC 通道。
ADC_SampleTime 设定了选中通道的 ADC 采样时间。
14. ADC_ExternalTrigConvCmd 函数
ADC外部触发转换控制,函数用于是否允许外部触发转换。
函数代码:
/**
* @brief Enables or disables the ADCx conversion through external trigger.
* @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
* @param NewState: new state of the selected ADC external trigger start of conversion.
* This parameter can be: ENABLE or DISABLE.
* @retval None
*/
void ADC_ExternalTrigConvCmd(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 */
ADCx->CR2 |= CR2_EXTTRIG_Set;
}
else
{
/* Disable the selected ADC conversion on external event */
ADCx->CR2 &= CR2_EXTTRIG_Reset;
}
}
15. ADC_GetConversionValue 函数
ADC获取转换值,获取AD转换的数据寄存器,读取转换结果就要使用这个函数。
16. 对模拟看门狗进行配置的函数
16.1 ADC_AnalogWatchdogCmd 函数
是否启动模拟看门狗。
ADC_AnalogWatchdog 规定了 ADC 模拟看门狗的设置。
16.2 ADC_AnalogWatchdogThresholdsConfig 函数
配置高低阈值。
16.3 ADC_AnalogWatchdogSingleChannelConfig 函数
配置看门的通道。
17. ADC_TempSensorVrefintCmd 函数
ADC温度传感器、内部参考电压控制。这个函数是用来开启内部的两个通道的。如果要用这两个通道,需要调用这个函数,开启一下。若不开启是读不到正确结果的。
18. 获取/清除
18.1 ADC_GetFlagStatus 函数
获取标志位状态。
18.2 ADC_ClearFlag 函数
清除标志位。
18.3 ADC_GetITStatus 函数
获取中断状态。
18.4 ADC_ClearITPendingBit 函数
清除中断挂起位。