专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
ad采集数据不对,求解?
2019-08-19 20:04
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
5089
6
1259
本帖最后由 来俩不甜的 于 2016-3-19 13:58 编辑
为什么我用ad1 ch1通道 采集电压,电压为0的时候数据是0,只要电压不为0 数据就是0xfff。请知道的帮忙解决一下,快搞死我了
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
来俩不甜的
1楼-- · 2019-08-19 22:11
精彩回答 2 元偷偷看……
加载中...
xuande
2楼-- · 2019-08-20 02:30
很可能配置不对。
AD程序,有例程吧?!
加载中...
来俩不甜的
3楼-- · 2019-08-20 05:40
xuande 发表于 2016-3-19 13:54
很可能配置不对。
AD程序,有例程吧?!
我就是抄的例程,之前用的是库函数,搞的我都改成寄存器了 还是不行。把程序贴上来你看看吧,很简单 [mw_shl_code=applescript,true]{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_DeInit(ADC1);
//adc初始化,使用寄存器
ADC1 -> CR1 &= 0XF0FFFF; //独立模式
ADC1 -> CR1 &= ~(1<<8); //关闭扫描模式
ADC1 -> CR2 &= ~(1<<1); //单次转换模式
ADC1 -> CR2 |= (7<<17); //软件控制启动
ADC1 -> CR2 |= (1<<20); //使用外部触发
ADC1 -> CR2 &= ~(1<<11); //右对齐
ADC1 -> SQR1 = 0;//&= ~(0XF<<20); //规则序列长度1个转换
ADC1 -> SMPR2 |= (7<<3); //设置通道1转换时间为239.5个周期
ADC1 -> CR2 |= 1; //唤醒ADC
ADC1 -> CR2 |= (1<<3); //开始复位校准
while(ADC1 -> CR2 & (1<<3)); //等待复位校准结束
ADC1 -> CR2 |= (1<<2); //开始校准
while(ADC1 -> CR2 & (1<<2)); //等待校准结束
}[/mw_shl_code]
加载中...
来俩不甜的
4楼-- · 2019-08-20 11:19
[mw_shl_code=applescript,true]u16 Get_ADCVal(u8 ch)
{
ADC1 -> SQR3 &= 0XFFFFFFE0; //清空规则序列中第一个转换的值
ADC1 -> SQR3 |= ch; //设置规则序列中第一个转换的值
ADC1 -> CR2 |= (1<<22); //启动规则转换
while(!(ADC1 -> SR & (1<<1)));//等待转换结束
return (ADC1 -> DR);
}[/mw_shl_code]
加载中...
WWCool
5楼-- · 2019-08-20 13:39
想问一下你的问题是怎么解决的,我也出现了这种问题。不知道能不能帮帮我。
加载中...
来俩不甜的
6楼-- · 2019-08-20 18:09
精彩回答 2 元偷偷看……
加载中...
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
STM32开发板免费用活动
7 个回答
stm32 处理 DHT11占用太多时间,大家程序是怎么设计的
8 个回答
分享一个STM32单片机做的离线编程器代码
9 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
很可能配置不对。
AD程序,有例程吧?!
我就是抄的例程,之前用的是库函数,搞的我都改成寄存器了 还是不行。把程序贴上来你看看吧,很简单 [mw_shl_code=applescript,true]{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
ADC_DeInit(ADC1);
//adc初始化,使用寄存器
ADC1 -> CR1 &= 0XF0FFFF; //独立模式
ADC1 -> CR1 &= ~(1<<8); //关闭扫描模式
ADC1 -> CR2 &= ~(1<<1); //单次转换模式
ADC1 -> CR2 |= (7<<17); //软件控制启动
ADC1 -> CR2 |= (1<<20); //使用外部触发
ADC1 -> CR2 &= ~(1<<11); //右对齐
ADC1 -> SQR1 = 0;//&= ~(0XF<<20); //规则序列长度1个转换
ADC1 -> SMPR2 |= (7<<3); //设置通道1转换时间为239.5个周期
ADC1 -> CR2 |= 1; //唤醒ADC
ADC1 -> CR2 |= (1<<3); //开始复位校准
while(ADC1 -> CR2 & (1<<3)); //等待复位校准结束
ADC1 -> CR2 |= (1<<2); //开始校准
while(ADC1 -> CR2 & (1<<2)); //等待校准结束
}[/mw_shl_code]
{
ADC1 -> SQR3 &= 0XFFFFFFE0; //清空规则序列中第一个转换的值
ADC1 -> SQR3 |= ch; //设置规则序列中第一个转换的值
ADC1 -> CR2 |= (1<<22); //启动规则转换
while(!(ADC1 -> SR & (1<<1)));//等待转换结束
return (ADC1 -> DR);
}[/mw_shl_code]
一周热门 更多>