打印

STM32 ADC 连续转换 如何停止

[复制链接]
12821|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子乌托邦|  楼主 | 2012-7-15 23:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 ADC 选择的是连续转换模式
请问如何能停下来?
如果是非连续模式,转换完一次自动就停下来了,连续模式该怎么停下来。。
我看PDF中可以清除ADON位来停止,但同时会断电,下次转换就要重新上电,有个上电延时。
有没有其他方法能叫ADC停下来休息休息?
请大家给说说
沙发
IJK| | 2012-7-16 09:56 | 只看该作者
可以换一种方式停止,只要清除“CONT”连续转换控制位,就会退出连续转换状态。

使用特权

评论回复
板凳
电子乌托邦|  楼主 | 2012-7-16 10:50 | 只看该作者
是的,LS是专家。
昨夜仔细研读ADC部分,在寄存器描述中发现清除CONT,就能退出连续转换,
现在可以退出了,然后无法重新启动了。。。。
重新执行       
ADC_DiscModeCmd(ADC1,DISABLE);                   // 置位CONT;
ADC_SoftwareStartConvCmd(ADC1, ENABLE);        // 开始转换;
也不行。
正在寻找重新启动连续转换的方法。。。

使用特权

评论回复
地板
dpedison| | 2013-6-8 16:29 | 只看该作者
请问楼主这个问题解决了么? 求教,我也遇到了这个问题

使用特权

评论回复
5
richuzhaohai| | 2013-7-22 01:03 | 只看该作者
楼主这个地方
ADC_DiscModeCmd(ADC1,DISABLE);                   // 置位CONT
写错了,这个函数不是置位CONT。
连续转换 停止/启动 的方法可以这样,我自己写的,已测试通过:
void    ADC_ContinuousCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
{
    /* Check the parameters */
    assert_param(IS_ADC_ALL_PERIPH(ADCx));
    assert_param(IS_FUNCTIONAL_STATE(NewState));
    if (NewState != DISABLE) {
        /* Enable the selected ADC CONT */
        ADCx->CR2 |= (1 << 1);
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    } else {
        /* Disable the selected ADC CONT */
        ADCx->CR2 &=~(1 << 1);
        ADC_SoftwareStartConvCmd(ADC1, DISABLE);
    }
}

使用特权

评论回复
6
richuzhaohai| | 2013-7-22 01:06 | 只看该作者
我*,这是一年前的问题啊

使用特权

评论回复
7
outstanding| | 2013-7-22 08:45 | 只看该作者

使用特权

评论回复
8
你便是终点| | 2018-9-28 10:20 | 只看该作者
richuzhaohai 发表于 2013-7-22 01:03
楼主这个地方
ADC_DiscModeCmd(ADC1,DISABLE);                   // 置位CONT
写错了,这个函数不是置位 ...

亲测可以,由于是连续转换 转变为  单次转换。设置之后还会转换一次就不转换了。保留最后一次转换的值。

使用特权

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

本版积分规则

140

主题

633

帖子

2

粉丝