adc的基本概念希望各位网友查阅相应的手册,上面对adc有比较详尽的介绍,包括误差的分析和消除。这里主要介绍adc的基本库函数的定义和使用。
1.adc_deinit函数的功能是将外设adcx的全部寄存器重设为默认值。
adc_deinit(adc2);
2.adc_init函数的功能是根据adc_initstruct中指定的参数初始化外设adcx的寄存器。其中adc_inittypedef定义在stm32f10x_adc.h中。其结构体如下所示:
typedef struct
{
u32 adc_mode;//可以设置adc_mode
functionalstate adc_scanconvmode;//规定了模数转换工作在扫描模式还是单次模式,参数可以是enable和disenable
functionalstate adc_cintinuousconvmode;//规定了模数转换工作在连续还是单次模式,参数可以是enable和disenable
u32 adc_externaltrigconv;//定义了使用外部触发来启动规则通道的模数转换
u32 adc_dataalign;//规定了adc数据向左边对齐还是右边对齐参数可以是right和left
u8 adc_nbrofchannel;//规定了顺序进行规则转换的adc通道的数目。参数可以是1~16
}adc_inittypedef
例:初始化adc1(可以按照自己的需要来初始化,这里只是一个例)
adc_inittypedef
adc_inittypedef adc_initstructure;
adc_initstructure.adc_mode = adc_mode_independent;
adc_initstructure.adc_scanconvmode = enable;
adc_initstructure.adc_cintinuousconvmode = disenable;
adc_initstructure.adc_externaltrigconv = adc_externaltrigconv_t1_cc1;
adc_initstructure.adc_data_align = adc_dataalign_right;
adc_initstructure.adc_nbrofchannel = 16;
adc_init(adc1,&adc_initstructure);
3.adc_cmd函数的功能是使能或失能指定的adc,其中adc_cmd只能在其他adc设置函数之后被调用
adc_cmd(adc1,enable);
4.adc_dmacmd函数的功能是使能或者失能指定的adc的dma请求。
adc_dmacmd(adc1,enable);
5.adc_itconfig函数的功能是使能或者失能指定的adc的中断,其中可以是eoc/awd/jeoc
adc_itconfig(adc2,adc_it_eoc|adc_it_awd);
6.adc_resetcalibration函数的功能是重置指定的adc的校准寄存器。
adc_resercalibration(adc1);
7.adc_getresetcalibrationsttaus函数的功能是获取adc重置校准寄存器的状态。
flagstatus status
status =adc_getresetcalibrationsttaus(adc2);
8.adc_startcalibration函数的功能是开始指定adc的校准。
adc_startcalibration(adc2);
9.adc_getcalibrationstatus函数的功能是获取adc的校准状态。具有返回值
flagstatus status;
status =adc_getcalibrationstatus(adc2);
10.adc_softwarestartconvcmd函数的功能是使能或者失能指定的adc的软件启动功能。
adc_softwarestartconvcmd(adc1,enable);
11.adc_discmodechannelcountconfig函数的功能是对adc规则通道配置间断模式。其中参数可以是1~8,间断模式计数器的值。
adc_discmodechannelcountconfig(adc1,2);
12.adc_discmodecmd函数的功能是使能或者失能指定的adc规则组通道的间断模式。
adc_discmodecmd(adc1,enable);
13.adc_regularchannelconfig函数的功能是设置adc的规则组通道,设置他们的转化顺序和采样时间,其中adc_channel指定了通过本函数来设置的adc通道,可以是0~17,adc_sampletime设置了选中通道的adc采样时间。
adc_regularchannelconfig(adc2,adc_channel_2,1,adc_sampletime_1cycles5);
14.adc_externaltrigconvconfig函数的功能是使能或者失能adcx的经外部触发启动转换功能。
adc_externaltrigconvconfig(adc2,enable);
15.adc_getconversionvalue函数的功能是返回最近一次adcx规则组的转换结果。
u16 datavalue;
datavalue = adc_getconversionvalue(adc2);
16.adc_getduelmodeconversionvalue函数的功能是返回最近一次双adc模式下的转换结果。
u32 datavalue;
datavalue =adc_getduelmodeconversionvalue();
17.adc_autoinjectedconvcmd函数的功能是使能或者失能指定adc在规则组转化后自动开始注入组转换。
adc_autoinjectedconvcmd(adc2,enable);
18.adc_injecteddiscmodecmd函数的功能是使能或者失能指定的adc注入组间断模式。
adc_injecteddiscmodecmd(adc2,enable);
19.adc_externalitriginjectedconvconfig函数的功能是配置adcx外部触发启动注入组转换功能。其中adc_externalitrigconv_it可以取多种启动触发模式
例:用定时器1的捕获比较4触发adc1注入组转换功能。
adc_externalitriginjectedconvconfig(adc1,adc_externalitrigconv_it_cc4);
20.adc_externalitriginjectedconvcmd函数的功能是使能或者失能adcx的经外部触发启动注入组转换功能。
adc_externalitriginjectedconvcmd(adc2,enable);
21.adc_softwarestartinjectedconvcmd函数的功能是使能或者失能adcx软件启动注入组转换功能。
adc_softwarestartinjectedconvcmd(adc2,enable);
22.adc_getsoftwarestartinjectedconvstatus函数的功能是获取指定adc的软件启动注入组转换状态,会返回一个adc软件触发启动注入转换的新状态。
flagstatus status;
status =adc_getsoftwarestartinjectedconvstatus(adc2);
23.adc_injectedchannelconfig函数的功能是设置指定adc的注入组通道,设置他们的转化顺序和采样时间。不过先决条件是之前必须调用函数adc_injectedsequencerlengthconfig来确定注入转换通道的数目,特别是在通道数目小于4的情况下,先正确配置每一个通道的转化顺序。
例:配置adc1第12通道采样周期28.5,第二个开始转换。
adc_injectedchannelconfig(adc1,adc_channel_12,2,adc_sampletime_28cycles5);
24.adc_injectedsequencelengthconfig函数的功能是设置注入组通道的转换序列长度。且序列长度的取值范围是~4。
adc_injectedsequencelengthconfig(adc1,1);
25.adc_setinjectefoffset函数的功能是设置注入组通道的转换偏移值。选择注入通道可以是1~4.偏移量是16位值。
adc_setinjectefoffset(adc_injectedchannel_1,0x100);
26.adc_getinjectedconversionvalue函数的功能是返adc指定注入通道的转换结果。
u16 injectedconversionvalue;
injectedconversionvalue =adc_getinjectedconversionvalue(adc1,adc_injectedchannel_1);
27.adc_tampsensorvrefintcmd函数的功能是使能或者失能温度传感器和内部参考电压通道。
adc_tempsensorvrefintcmd(enable);
28.adc_getflagstatus函数的功能是检查指定的adc标志位是否置1.会返回一个新的adc_flag值。其中指定标志位可以取5种值。
flagstatus status;
flagstatus = adc_getflagstatus(adc1,adc_flag_awd);
29.adc_clearflag函数的功能是清除adcx待处理的标志位。在使用本函数之前是调用过了adc_getflagstatus函数的。
adc_clearflag(adc2,adc_flag_awd).
关于外夹式超声波流量计在安装过程中的注意事项
物联网的发展模式_高通如何推动无线边缘服务
全球四大光刻机生产商
华为以100%通过率顺利完成了第三阶段5G独立组网SA测试
5G赋能行业的功效初现,开放合作互利共赢5G时代
STM32单片机ADC库函数的定义和使用方法
小米8SE和联想Z5s哪个好
马云粑粑杭州开业的无人超市是噱头?背后存在更大的商机
新欧洲指令对于区块链有怎样的影响
史上最全面的电机知识解说,从电机分类到选型!
驾驶员监控系统迅速成为各大汽车制造商的首选
国内面板商布局OLED,有望赢在起跑线
运营商2016年业绩分析报告:联通掉队 移动独大 市场失衡
Verilog中阻塞和非阻塞赋值金规
京东众智专注于人工智能数据标注和采集的科技平台
岛桥结构的可拉伸曲面传感器和借助折纸结构变形的柔性曲面传感器
BrainCo利用应用脑机接口技术研发大脑智能操作系统
芯片厂商Marvell将裁员900人,裁员比例约16%
牙刷除锡巧拆集成电路
万物互联时代下的5G与传统物流的融合