STM32的ADC单次转换设计.doc

上传人:白大夫 文档编号:3273773 上传时间:2019-08-07 格式:DOC 页数:4 大小:21.50KB
返回 下载 相关 举报
STM32的ADC单次转换设计.doc_第1页
第1页 / 共4页
亲,该文档总共4页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《STM32的ADC单次转换设计.doc》由会员分享,可在线阅读,更多相关《STM32的ADC单次转换设计.doc(4页珍藏版)》请在三一文库上搜索。

1、STM32的ADC单次转换设计下面分别为库函数和直接操作寄存器的两个范便,我都已测试通过使用此程序前必要对GPIO设好为模拟输入方式=库函数版=void AD_CONFIG_SINGLE(void )/先配置IO口:ADC_InitTypeDef adcInitStruct;/PB1 作为模拟通道输入引脚RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);/使能ADC和GPIOC时钟/配置ADC:/将ADC配置成非扫描方式(就是每次处理时不会扫描本组内的所有端口),因为采用规则组时只有一个寄存器保存adc结果;单次模式。adcInitStr

2、uct.ADC_Mode = ADC_Mode_Independent;adcInitStruct.ADC_ScanConvMode = DISABLE;adcInitStruct.ADC_ContinuousConvMode = DISABLE;adcInitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;adcInitStruct.ADC_DataAlign = ADC_DataAlign_Right;adcInitStruct.ADC_NbrOfChannel = 1;ADC_Init(ADC1, ADC_Cmd(ADC1,

3、 ENABLE);ADC_TempSensorVrefintCmd(ENABLE);ADC_ResetCalibraTIon(ADC1);while(ADC_GetResetCalibraTIonStatus(ADC1);/ ADC_StartCalibraTIon(ADC1);while(ADC_GetCalibrationStatus(ADC1);/ /每次扫描时调用函数:u16 AD_sysGetAdcResult(void)u16 ad;ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5)

4、;ADC_ClearFlag(ADC1, ADC_FLAG_EOC);ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)=0);ad = ADC_GetConversionValue(ADC1);/ADC_TempSensorVrefintCmd(DISABLE);/ADC_SoftwareStartConvCmd(ADC1, DISABLE);/ADC_Cmd(ADC1, DISABLE);return ad;=寄存器版=voidAD_CONFIG_SINGLE(void)/先初始

5、化 IO 口/RCC-APB2ENR|=12;/使能 PORTA 口时钟/GPIOA-CRL/PA0 1 2 3 anolog 输入/通道 10/11 设置RCC-APB2ENR|=19;/ADC1 时钟使能RCC-APB2RSTR|=19;/ADC1 复位RCC-APB2RSTR/复位结束RCC-CFGR/分频因子清零/SYSCLK/DIV2=12M ADC 时钟设置为 12M,ADC 最大时钟不能超过 14M!/否则将导致 ADC 准确度下降!RCC-CFGR|=214;ADC1-CR1/工作模式清零ADC1-CR1|=016;/独立工作模式ADC1-CR1/非扫描模式ADC1-CR2/单

6、次转换模式ADC1-CR2ADC1-CR2|=717;/软件控制转换ADC1-CR2|=120;/使用用外部触发(SWSTART)! 必须使用一个事件来触发ADC1-CR2/右对齐ADC1-SQR1ADC1-SQR1/1 个转换在规则序列中也就是只转换规则序列 1/设置通道 03 的采样时间ADC1-SMPR1|=7;/通道 10239.5 周期,提高采样时间可以提高精确度ADC1-CR2|=10;/开启 AD 转换器ADC1-CR2|=13;/使能复位校准while(ADC1-CR2/等待校准结束/该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。ADC1-CR2|=12;/开启 AD 校准while(ADC1-CR2/等待校准结束/该位由软件设置以开始校准,并在校准结束时由硬件清除/获得 ADC 值/ch:通道值03u16 AD_sysGetAdcResult(void)/设置转换序列ADC1-SQR3/规则序列 1通道 chADC1-SQR3|=10;ADC1-CR2|=122;/启动规则转换通道while(!(ADC1-SR/等待转换结束return ADC1-DR;/返回 adc 值

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1