高中生
最后登录1970-1-1
在线时间 小时
注册时间2016-8-30
|
楼主 |
发表于 2017-3-6 21:19:02
|
显示全部楼层
就是用野火的例程改的呀。
管脚:- static void Rheostat_ADC_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- // 使能 GPIO 时钟
- RCC_AHB1PeriphClockCmd(RHEOSTAT_ADC_GPIO_CLK, ENABLE);
-
- // 配置 IO
- GPIO_InitStructure.GPIO_Pin = RHEOSTAT_ADC_GPIO_PIN;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; //不上拉不下拉
- GPIO_Init(RHEOSTAT_ADC_GPIO_PORT, &GPIO_InitStructure);
- }
复制代码
用的是C3管脚,ADC1通道十三。
然后是ADC配置:
- static void Rheostat_ADC_Mode_Config(void)
- {
- ADC_InitTypeDef ADC_InitStructure;
- ADC_CommonInitTypeDef ADC_CommonInitStructure;
-
- // 开启ADC时钟
- RCC_APB2PeriphClockCmd(RHEOSTAT_ADC_CLK , ENABLE);
- // -------------------ADC Common 结构体 参数 初始化------------------------
- // 独立ADC模式
- ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
- // 时钟为fpclk x分频
- ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
- // 禁止DMA直接访问模式
- ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
- // 采样时间间隔
- ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_20Cycles;
- ADC_CommonInit(&ADC_CommonInitStructure);
-
- // -------------------ADC Init 结构体 参数 初始化--------------------------
- // ADC 分辨率
- ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; //配置分辨率
- // 禁止扫描模式,多通道采集才需要
- ADC_InitStructure.ADC_ScanConvMode = DISABLE;
- // 连续转换
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
- //禁止外部边沿触发
- ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
- //使用软件触发,外部触发不用配置,注释掉即可
- //ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
- //数据右对齐
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
- //转换通道 1个
- ADC_InitStructure.ADC_NbrOfConversion = 1;
- ADC_Init(RHEOSTAT_ADC, &ADC_InitStructure);
- //---------------------------------------------------------------------------
-
- // 配置 ADC 通道转换顺序为1,第一个转换,采样时间为56个时钟周期
- ADC_RegularChannelConfig(RHEOSTAT_ADC, RHEOSTAT_ADC_CHANNEL, 1, ADC_SampleTime_56Cycles);
- // ADC 转换结束产生中断,在中断服务程序中读取转换值
-
- ADC_ITConfig(RHEOSTAT_ADC, ADC_IT_EOC, ENABLE);
- // 使能ADC
- ADC_Cmd(RHEOSTAT_ADC, ENABLE);
- //开始adc转换,软件触发
- ADC_SoftwareStartConv(RHEOSTAT_ADC);
- }
复制代码
初始化大概就是这样了
|
|