OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4693|回复: 4

请教原子哥和坛子里的大神们关于 adc->dr读不到数的问题

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2014-9-7
在线时间
3 小时
发表于 2014-9-7 11:51:47 | 显示全部楼层 |阅读模式
5金钱
步骤都是按教程做的,可是不知道是哪里出错了,adc就是读不到数,反复检查了2天了,查不出问题所在。求原子哥和大神们帮下忙看看哪里出错了。

////////////////////下面是adc.c文件,使用pa3,adc用的是adc1 通道3

#include <adc.h>
#include <sys.h>

void ADC_INIT(void) 
{
RCC->APB2ENR|=1<<2;  //io a使能
GPIOA->CRL&=0XFFFF0FFF;  //a7 为模拟输入

RCC->APB2ENR|=1<<9;   //使能adc1时钟
RCC->APB2RSTR|=1<<9;   //复位adc1时钟
RCC->APB2RSTR&=~(1<<9);

RCC->CFGR&=~(3<<14);  //设置adc 时钟分频因子为6
RCC->CFGR|=2<<14;

ADC1->CR1&=0XF0FFFF;      //工作模式清零,清零为独立模式
ADC1->CR1|=0<<16; //~~~~~~~

ADC1->CR1&=~(1<<8);  //adc1非扫描模式
ADC1->CR2&=~(1<<1);  //adc1单次转换
ADC1->CR2&=~(7<<17);  //清空转换控制方式
ADC1->CR2|=7<<17;  //选择软件控制转换
ADC1->CR2|=1<<20;  //使用外部触发,swstart必须使用一个事件来触发
ADC1->CR2&=~(1<<11);  //右对齐

ADC1->SQR1&=~(0X0F<<20);   //清空转换规则序列,默认即为只转换序列1
ADC1->SQR1|=0<<20;

ADC1->SMPR2&=~(7<<9);//通道1采样时间清空
ADC1->SMPR2|=7<<9;//通道1采样时间239.5周期   ~~~~~~~~~

ADC1->CR2|=1<<0;  //ADC1使能
ADC1->CR2|=1<<3;   //ADC1使能复位校准
while(ADC1->CR2&1<<3);//等待复位校准结束
ADC1->CR2|=1<<2;  //adc1 ad校准
while(ADC1->CR2&1<<2); //等待校准结束
}

u16 GETADC(u8 ch)
{
ADC1->SQR3&=0XFFFFFFE0;  //设置序列1 为ch
ADC1->SQR3|=ch;
// ADC1->CR2|=1<<0;    //~~~~~~~
ADC1->CR2|=1<<22;
// ADC1->CR2|=1<<0;    //~~~~~~~
while(~ADC1->SR&0x02); //(特别注意这个取反)
return ADC1->DR;
}

////////////下面是adc.h内容

#ifndef __ADC_H
#define __ADC_H

#include <sys.h>



void ADC_INIT(void);
u16 GETADC(u8 ch);



#endif

//////////////////////////////main.c里面用一下程序调用,可是dr读到数永远为0

adc_back=GETADC(3);
TIM4->CCR1=(adc_back-1650)/2446+60;


求原子哥和各位大神们帮忙看看问题到底出在哪里啊,万分感谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

1606

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2222
金钱
2222
注册时间
2011-12-15
在线时间
37 小时
发表于 2014-9-7 12:34:10 | 显示全部楼层
看下ADC DR寄存器就没有数据
专业制作STM32 物联网通信模块板,模块交流群:369840039。
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2014-9-7
在线时间
3 小时
 楼主| 发表于 2014-9-7 12:44:36 | 显示全部楼层
 回复【2楼】 ST-FAE-SALE :
---------------------------------
感谢版主大人回复,用keil仿真,一步一步走dr寄存器始终为0。


回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2014-9-7
在线时间
3 小时
 楼主| 发表于 2014-9-7 20:44:52 | 显示全部楼层
到底问题出在哪里呢
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-9-7 22:48:34 | 显示全部楼层
直接下载我们的例程测试下.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-1 15:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表