OpenEdv-开源电子网

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

STM32L151 stop模式唤醒后,ADC卡死在转换那里,串口正常

[复制链接]

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
发表于 2020-12-24 09:44:31 | 显示全部楼层 |阅读模式
5金钱
STM32L151 stop模式唤醒后,ADC卡死在转换那里,串口正常,时钟应该正常。唤醒后有调用system_init();ADC_init函数。ADC用的HSI时钟。系统用的是HSE。

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

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-12-24 10:17:19 | 显示全部楼层
ADC都卡死了,你串口还能正常工作?
一分耕耘一分收获。
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-12-24 11:38:01 | 显示全部楼层
yklstudent 发表于 2020-12-24 10:17
ADC都卡死了,你串口还能正常工作?

我串口输出在ADC 函数之前
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-12-24 11:39:04 | 显示全部楼层
void  Adc_Init(void)
{        
       
               
                GPIO_InitTypeDef GPIO_InitStructure;
                ADC_InitTypeDef ADC_InitStructure;
                /*----------------- ADC1 configuration with DMA enabled --------------------*/
    /* Enable the HSI oscillator */
    RCC_HSICmd(ENABLE);

    /* Enable GPIOB clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    /* Configure PB.0 (ADC Channe8) in analog mode */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    /* Check that HSI oscillator is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);

    /* Enable ADC1 clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    /* ADC1 configuration */
    ADC_InitStructure.ADC_ScanConvMode = ENABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfConversion = 1;
    ADC_Init(ADC1, &ADC_InitStructure);
    /* ADC1 regular channel18 configuration */
    ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_4Cycles);   
    /* Enable ADC1 */
                ADC_TempSensorVrefintCmd(ENABLE);
    ADC_Cmd(ADC1, ENABLE);
               
                /* Wait until the ADC1 is ready */
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESET)
    {
                        Uart1_SendStr(".");
                        delay_ms(1000);
    }   
                ADC_SoftwareStartConv(ADC1);
               
}
u16 Get_Adc(u8 ch)   
{
       
          //设置指定ADC的规则组通道,一个序列,采样时间
        ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_96Cycles );        //ADC1,ADC通道,采样时间为239.5周期                                      
  delay_ms(50);
        ADC_SoftwareStartConv(ADC1);                //使能指定的ADC1的软件转换启动功能       
         
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC )){
       

        }
            ADC_ClearFlag (ADC1,ADC_FLAG_EOC);   
       
       
        return ADC_GetConversionValue(ADC1);        //返回最近一次ADC1规则组的转换结果
}
  卡死在while 这里了
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-12-24 11:53:01 | 显示全部楼层
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4951
金钱
4951
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-12-24 13:10:41 | 显示全部楼层
/* Enable GPIOB clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    /* Configure PB.0 (ADC Channe8) in analog mode */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
你到底用PB0还是PA0
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-12-24 13:52:46 | 显示全部楼层
阿侑kevin 发表于 2020-12-24 13:10
/* Enable GPIOB clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    /* Configure  ...

PA. 注释没改
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2019-10-20
在线时间
31 小时
 楼主| 发表于 2020-12-24 13:53:12 | 显示全部楼层
嗯哼s 发表于 2020-12-24 11:39
void  Adc_Init(void)
{        
       

没有进入stop 模式前 ADC能正常运作
回复

使用道具 举报

1

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2020-11-7
在线时间
44 小时
发表于 2020-12-24 15:29:45 | 显示全部楼层
建议你查查STM32L151的中文手册,在低功耗停止模式下会有哪些功能关闭。
回复

使用道具 举报

11

主题

2154

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4951
金钱
4951
注册时间
2015-1-10
在线时间
620 小时
发表于 2020-12-24 17:14:08 | 显示全部楼层

那你下面为什么初始化PB
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 08:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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