栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

ADC 配置(非扫描和扫描)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ADC 配置(非扫描和扫描)

一 ADC简介

ADC是模数转换器

STM32 有16个人外部通道和两个内部通道。

STM32F103C8T6只有10个外部通道。

引脚与ADC通道关系表

二 配置框图

三 ADC 配置中所用到的函数

RCC_ADCCLKConfig(uint32_t RCC_PCLK2);

配置adc的时钟,这个是配置预分频器的有2、4、6、8,ADC的最大频率为14MHz,而ADC是接在APB2总线上的,所以与分频系数一般选择6或8.

ADC_DeInit(ADC_TypeDef* ADCx);恢复缺省配置
ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct); 初始化ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);结构体初始化

ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);使ADC使能,对应框图的开关控制

ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);开启DMA输出信号的(在多通道中使用)

ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);中断输出控制。控制某个中断能不能通向NVIC。

void ADC_ResetCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);
void ADC_StartCalibration(ADC_TypeDef* ADCx);
FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);

控制校准的函数,在ADC初始化完成后依次调用即可。

void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);

void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);

ADC开始转化控制,第一个是软件触发,第二是硬件触发。

FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);这个函数没什么卵用。

FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG);

这个函数判断转化是否结束,如果获取EOC的标志位,如果EOC标志位置一,证明转化结束。

void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);
void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);

这两个函数是配置间断的,第一个是配置隔几个通道间断一次,第二个为是否启动间断。

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);

ADC规则组通道配置。

uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);

uint32_t ADC_GetDualModeConversionValue(void);

ADC获取转换值。第二个是双ADC模式。

void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);
void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);
FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);
void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);
void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);
void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset);
uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);

ADC的注入组的配置。

void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);
void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold, uint16_t LowThreshold);
void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);

对模拟看门狗进行配置。

void ADC_TempSensorVrefintCmd(FunctionalState NewState);

ADC内部温度传感器,内部参考电压控制。开启内部两个通道的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/951819.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号