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

2019-07-21 07:27发布

  使用的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("停止模式 ");
        sys_conter++;       
        if(sys_conter%5==0)
        {
                printf("停止模式 ");
                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 ", ADC_ConvertedValue);
                printf("计算得出电压值 = %f V ",ADC_ConvertedValueLocal);
                printf("计算得出电池电压值 = %f V ",ADC_ConvertedValueLocal/0.09090909);
        }
        if(sys_conter>=30)    //30秒
        {
                printf("CESHI ");
                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 ");
       
        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("即将断电 ");
                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;
                }
        }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。