你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f103c8t6的adc问题!!!非常急!!!

[复制链接]
hyx10000 提问时间:2018-4-30 18:42 /
我的stm32f103c8t6的adc设置是单次单通道转换,软件触发。但是软件触发命令后,adc根本没有开始转换。SR寄存器中的STAT标志位一直没有置位。
什么原因?
收藏 评论16 发布时间:2018-4-30 18:42

举报

16个回答
七哥 回答时间:2018-4-30 23:32:09
套路没对,上程序吧。
你先试试采集内部温度传感器和参考电压通道,通道16、17。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

pythonworld 回答时间:2018-5-1 05:59:54
仔细检查程序,时钟设置好了吗?

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

hyx10000 回答时间:2018-5-2 11:27:30
pythonworld 发表于 2018-5-1 05:59
仔细检查程序,时钟设置好了吗?

都设置了
hyx10000 回答时间:2018-5-2 11:28:30
时钟都设置好了。
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE);
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);
hyx10000 回答时间:2018-5-2 11:28:55
而且其它功能都是正常的
hyx10000 回答时间:2018-5-2 11:29:27
我使用了好几个通道,都是一样的效果
hyx10000 回答时间:2018-5-2 11:31:42
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE);
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);
       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        //
        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(ADC2, &ADC_InitStructure);

        ADC_RegularChannelConfig(ADC2,ADC_Channel_4,1,ADC_SampleTime_55Cycles5);

ADC_Cmd(ADC2,ENABLE);

        ADC_ResetCalibration(ADC2);
        while(ADC_GetResetCalibrationStatus(ADC2));
        ADC_StartCalibration(ADC2);
        while (ADC_GetCalibrationStatus(ADC2));

hyx10000 回答时间:2018-5-2 12:35:26
以上是初始化代码

点评

楼主你可以在一个楼层把内容说清楚么,这样一句话回复一次看的很累!  发表于 2018-6-4 13:08
hyx10000 回答时间:2018-5-2 12:36:11
gpio的时钟我在前面初始化了
hyx10000 回答时间:2018-5-2 12:38:58
                                                ADC_ClearFlag(ADC2, ADC_FLAG_STRT);
                                                ADC_SoftwareStartConvCmd(ADC1,ENABLE);
                                                if(ADC_GetFlagStatus(ADC1, ADC_FLAG_STRT))
                                                        LED_ON();
                                                sdDataBuf[0] =  ADC_GetConversionValue(ADC1);
                                                ADC_SoftwareStartConvCmd(ADC1,ENABLE);                                               
                                                //while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
                                                wdDataBuf[0] =  ADC_GetConversionValue(ADC1);       
这个是main函数中的代码,那个led灯一直不亮。两个数组中的数据都是0,如果增加while那一句,那么就死在那里了。
hyx10000 回答时间:2018-5-2 15:42:55
我调试发现软件启动位没有被执行置1,怎么回事
五哥1 回答时间:2018-5-24 23:33:19
用CUBEMX配置一个ADC1,测试下PA4,然后再检查你的程序,然后配置ADC2,然后再检查你的程序

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

周蔷 回答时间:2018-5-30 10:23:23
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

这些都不是自动转换的啊,

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

电子星辰 回答时间:2018-5-30 17:09:45
百度网盘下载速度太慢了,直接上链接吧,都是103cbt6HAL库的例程。
OneWire_DS18b20温度传感器https://pan.baidu.com/s/1MR3zDKaRtSVWqksLoYhIIw
OneWire_DHT11温湿度传感器https://pan.baidu.com/s/1i_kxUCRP58s--Fb9ucuHPw
ADC实验https://pan.baidu.com/s/1DJQSBQ_-TwySt4xj0Xq1hw
可以看看,比对比对

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版