OpenEdv-开源电子网

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

F103RCT6进入低功耗后有时候程序仍然运行

[复制链接]

32

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
318
金钱
318
注册时间
2014-6-20
在线时间
27 小时
发表于 2018-11-26 11:10:46 | 显示全部楼层 |阅读模式
1金钱
  使用的HAL库,HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);进入停止模式后,有的时候LED灯还是闪烁,只不过是闪烁的频率比没进入停止模式之前慢了好多,不知道是怎么回事,请大神看一下



while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
               
        HAL_Delay(1000);
        HAL_GPIO_TogglePin(GPIOB, LED1_Pin);
                printf("停止模式\r\n");
        sys_conter++;       
        if(sys_conter%5==0)
        {
                printf("停止模式\r\n");
                EXT_CON++;
        }
        if(sys_conter%3==0)
        {
                HAL_GPIO_TogglePin(GPIOB, LED2_Pin);
                HAL_GPIO_WritePin(COM_PWR_GPIO_Port, COM_PWR_Pin, GPIO_PIN_RESET);           //给232芯片上电
                ADC_ConvertedValueLocal =(float)ADC_ConvertedValue*3.3/4096;
                flexiforce_R =3.3*20/ADC_ConvertedValueLocal; // V(out) = Rref * Vcc / R;  Rref=20K  Vcc=3.3V
                printf("AD转换原始值 = 0x%04X \r\n", ADC_ConvertedValue);
                printf("计算得出电压值 = %f V \r\n",ADC_ConvertedValueLocal);
                printf("计算得出电池电压值 = %f V\r\n",ADC_ConvertedValueLocal/0.09090909);
        }
        if(sys_conter>=30)    //30秒
        {
                printf("CESHI\r\n");
                HAL_GPIO_WritePin(COM_PWR_GPIO_Port, COM_PWR_Pin, GPIO_PIN_RESET);           //给232芯片上电
                BAT_BUF[9]=((ADC_ConvertedValueLocal/0.09090909)*100)/(25.2-18);
                BAT_BUF[10]=crc8(BAT_BUF,10);
                HAL_UART_Transmit(&huart5,(uint8_t*)BAT_BUF,11,1000);         //发送电量
                sys_conter=0;
        }
       
//        printf("OK\r\n");
       
        if(EXT_FLAG)                                             //休眠后上电蜂鸣器响一下
        {
                HAL_GPIO_WritePin(GPIOB,BEEP_Pin,GPIO_PIN_SET);
                HAL_Delay(400);
                HAL_GPIO_WritePin(GPIOB,BEEP_Pin,GPIO_PIN_RESET);
                EXT_FLAG=0;
                HAL_GPIO_WritePin(GPIOB, SPEAK_PWR_Pin,GPIO_PIN_SET);
        }
        if(USART_RX_STA&0x8000)
        {
                 HAL_UART_Transmit(&huart4,(uint8_t*)USART_RX_BUF,DATA_LEN+2,100);
                 date_pro();//数据处理
                 USART_RX_STA=0;
        }                       
        if(EXT_CON>=2) //18三分钟
        {
               
                HAL_Delay(1000);
                HAL_UART_Transmit(&huart5,(uint8_t*)OFF_BUF,11,1000);                          //发送断电指令
                HAL_UART_Transmit(&huart2,(uint8_t*)SPEAK_BUF1,8,1000);     //语音播报即将断电
//                printf("即将断电\r\n");
                HAL_Delay(9000);
                if(EXT_CON>=2)
                {
                        HAL_UART_Transmit(&huart2,(uint8_t*)SPEAK_BUF2,8,1000);     //语音播报即将断电
                  HAL_Delay(1000);
                        MX_GPIO_Init2();
                        HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);
                        EXT_CON=0;
                }
        }

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

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-11-26 12:10:18 | 显示全部楼层
一般停止模式,灯是不会闪的
你参考这个帖子看下:http://www.openedv.com/forum.php ... d=283325&extra=
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

7

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2017-8-21
在线时间
76 小时
发表于 2018-11-26 15:50:30 | 显示全部楼层
你这应该是没进去停止模式,低功耗分别有 睡眠,停止,关闭,三种,停止跟关闭各项IO都是要关掉的,你进入了停止模式灯是不会闪的。
看一下是否正常进入了停止模式,还是说压根没进到停止模式。。
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7571
金钱
7571
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-11-26 15:53:49 | 显示全部楼层
是不是被唤醒了呢?
回复

使用道具 举报

32

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
318
金钱
318
注册时间
2014-6-20
在线时间
27 小时
 楼主| 发表于 2018-11-27 13:37:57 | 显示全部楼层
路人曦 发表于 2018-11-26 15:50
你这应该是没进去停止模式,低功耗分别有 睡眠,停止,关闭,三种,停止跟关闭各项IO都是要关掉的,你进入 ...

怎么看进没进入停止模式,只是有时候灯会闪,灯闪的时候也是很慢速的闪
回复

使用道具 举报

7

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2017-8-21
在线时间
76 小时
发表于 2018-11-27 13:59:54 | 显示全部楼层
影腾 发表于 2018-11-27 13:37
怎么看进没进入停止模式,只是有时候灯会闪,灯闪的时候也是很慢速的闪

你看data sheet上面有介绍,你具体查一下停止模式各IO口的状态,去确定一下有没有进入到停止模式,还有就是测电压,不管是休眠还是停止还是关闭,都会有明显的降低幅度。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 02:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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