打印

大牛指点下我的STM32 ADC啊

[复制链接]
3091|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dwlovehome|  楼主 | 2012-2-15 12:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题:我stm32 用的是pin0~pin7 8个通道 不想使用DMA来传数据,因此就只有手动才数据,这个程序是零点学习板带的
u16 Get_Adc(u8 ch)   
{
//设置转换序列      
ADC1->SQR3&=0XFFFFFFE0;//规则序列1 通道ch
ADC1->SQR3|=ch;           
ADC1->CR2|=1<<22;       //启动规则转换通道
while(!(ADC1->SR&1<<1));//等待转换结束      
return ADC1->DR;  //返回adc值
}

然后我的ADC配置:
void  Adc_Init1(void)
{   
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
/* ADC1 configuration ------------------------------------------------------*/
ADC_InitStructure.ADC_Mode  = ADC_Mode_Independent; //独立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE;  //非扫描模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //单次转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由软件触发转换;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0|ADC_Channel_1|ADC_Channel_2|ADC_Channel_3|ADC_Channel_4|ADC_Channel_5|ADC_Channel_6,
                          1, ADC_SampleTime_13Cycles5);

ADC_DMACmd(ADC1, DISABLE);
ADC_Cmd(ADC1, ENABLE);     //启动ADC1
ADC_ResetCalibration(ADC1);  //重置ADC1的校准寄存器
while (ADC_GetResetCalibrationStatus(ADC1));  //获取ADC重置校准寄存器的状态
ADC_StartCalibration(ADC1);      //开始ADC1的校准程序
while (ADC_GetCalibrationStatus(ADC1));    //等待ADC1校准结束
ADC_ExternalTrigConvCmd(ADC1, ENABLE);//启动AD转换
}

上面红色的部分那么写对么?  

我现在在定时器里面通过Get_Adc(u8 ch) 这个函数来取AD值,请问这么写对不对
沙发
SLEET1986| | 2012-2-15 13:44 | 只看该作者
没看出什么问题,去试验一下。。

使用特权

评论回复
板凳
airwill| | 2012-2-15 15:46 | 只看该作者
上面红色的部分那么写不对,  只能一个通道一个通道地设置哦

Get_Adc(u8 ch)  应该没有问题哦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

41

帖子

0

粉丝