打印

为什么F0的ADC要这么来一下才行?

[复制链接]
1617|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
s99060|  楼主 | 2013-3-12 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
上电时ADEN基本上不能置位,而按reset就可以

ADC1->CR |= ADC_CR_ADEN;                          // ADC1上电
while((ADC1->ISR & ADC_ISR_ADRDY) == 0)   // 等待Ready(需1us)会憋死在此
{
    ADC1->CR |= ADC_CR_ADEN; <-------没这句,上电时ADEN就不能置位,而按reset就可以
}

jlink有没有都一样,憋死时重新下载后直接运行也是没问题的
沙发
香水城| | 2013-3-12 10:36 | 只看该作者
什么叫做“ADEN不能置位”?调试的时候发现软件写1,写不进去?那么请确保软件置1的时候,ADC_CR寄存器中的所有位都是清零的。你看看?

使用特权

评论回复
板凳
s99060|  楼主 | 2013-3-12 13:01 | 只看该作者
对,ADEN一次写入不够,再来一次就可以了,这样也行:
ADC1->CR |= ADC_CR_ADEN;                            // ADC1上电
ADC1->CR |= ADC_CR_ADEN;                            // ADC1上电---再来一次
while((ADC1->ISR & ADC_ISR_ADRDY) == 0);   // 等待Ready(需1us)

自己做的板和买的开发板都一样,ADC_CR里是0,因为这个是初始化的时候
jlink可以mcu运行时拔了板子的电然后上电,可以看出停在那等待了,ulink不行

这个ADC初始化前面是GPIO,TIM的初始化,都正常的

使用特权

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

本版积分规则

40

主题

224

帖子

0

粉丝