你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S led熄灭后不能再次开机的问题

[复制链接]
jackyang0507 提问时间:2019-4-22 17:12 /
最近改了一个程式如下,调试时发现运行M_LowBatteryPower时,第一次可以有LED闪烁,led灯灭之后开不了机,必须断电重来。
void main(void)
{
        u8        button_test=1;
       
        /*!<Set High speed internal clock */
        CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);        //16MHz

        /* TIM4 counter 1ms  */               
        Tim4_Init();                                //1ms counter interrupts

        /* ADC Ch4 & Ch3 Init */
        ADCPin_Init();
        __enable_interrupt();                        

        /* LED_GPIO */
        LED_Init();
       
        /* GPIO_input */
        INGPIO_Init();
       
        POWER(OFF);

        t25minstop = T25MIN_STOP;

        while(ADCBatteryFirstOK)                        // power on check battery Level low power or not
        {
                LED_3(OFF);
                LED_4(OFF);
                SetUltrasound_PWM(0);                // Ultrasound OFF
                Get_Battery_ADC();

                if(Conversion_Value[0] < 2.1)
                {     batterylow_flg = 1;
                        //BatteryLV = 5;//2改为
                        //Dischargeindicator_stage = BatteryL;
                }

               if(fbtadc)
                        if(Conversion_Value[0] > 2.1)                // 1.875/20190417
                                ADCBatteryFirstOK = 0;
                                batterylow_flg = 0;
        };
       
        while(1)
        {

                KeyNo = GetKey();
               
                Get_Battery_Ultrasound_ADC();        // 1ms get battery adc *20 = 20ms & 1ms get ultsound adc*20 = 20ms

                GetBattery_Level_Process(Run_Mode);
                Get_Battery_ADC();
                BatteryIndicator_Process(Run_Mode,Dischargeindicator_stage);
                if(batterylow_flg)
                        Run_Mode = M_LowBatteryPower;//0421
               
            switch(Run_Mode)
                {
                        case M_WaitKey:   // check key = enter or 3s enter
                        {
                //                workingtime.Tcut_flg = disable;
                                t1secstop = 1750;
                                t25minstop = T25MIN_STOP;
                                offsetcut = 0;
                               // t10secstop = 5000;
                                LED_3(OFF);
                                LED_4(OFF);
                             
                                if(KeyNo == KEY_ENTER)
                                        Run_Mode = M_Standard;
                                else if(KeyNo == KEY_3SENTER)
                                        Run_Mode = M_Inverse;
                        }       
                        break;       

                        case M_Inverse:   // M_Inverse mode
                        {                               
                                POWER(ON);                        // power latch
                                LED_3(ON);
                                LED_4(ON);
                                EN_Inverse = 1;                // disable no water auto stop
                               
                                if(t1secstop == 0 && KeyNo == NO_KEY)
                                        Run_Mode = M_Standard;               
                        }       
                        break;       

                        case M_Standard:   // standard mode
                        {                               
                                while(button_test)                       
                                {
                                        POWER(ON);
                                        LED_3(OFF);
                                        LED_4(ON);// power latch
                                        TIM2_PWM_Init();                //Ultrasound PWM init
                                        button_test = 0;
                        //                workingtime.Tcut_flg = enable;
                                /*
                                        for(n=0;n<30;n++)
                                        {
                                                wt.buff1[n] = 0;
                                                wt.buff2[n] = 0;
                                                wt.buff3[n] = 0;
                                        }
                                */
                                        wt.ost_gap = 0;
                                        wt.ost_old = 0;
                                        wt.ost_new = 0;
                                }
       
                                if(scan_ultrasound_PWM)                                // ultrasound
                                {
                                        scan_ultrasound_PWM = 0;
                                        UltSound_Scanfrequency_process(Dischargeindicator_stage);
                                }

                                if(KeyNo != NO_KEY)
                                        Run_Mode = M_PowerOFF;
                        }       
                        break;       
                        
                       case M_LowBatteryPower:
                        {       
                               
                                 
                                if(lowpowercut >= 5)
                                {       //SetUltrasound_PWM(0);//放在这里闪烁5次灯,只有才不喷雾
                                        //Run_Mode = M_PowerOFF;
                                        SetUltrasound_PWM(0);
                                         
                               
                               
                                }
                                else
                                //{
                                        if(lowledstep == 0)                // Red On
                                        {
                                                if(tLowbatteryshutter == 0)
                                                {
                                                        tLowbatteryshutter = 500;
                                                        //LED_1(OFF);
                                                        //LED_2(OFF);
                                                        LED_3(ON);
                                                        LED_4(OFF);               
                                                        //LED_5(OFF);
                                                        lowledstep = 1;
                                                }
                                        }
                                        else if(lowledstep == 1)                //Red Off
                                        {
                                                if(tLowbatteryshutter == 0)
                                                {
                                                        tLowbatteryshutter = 500;
                                                        //LED_1(OFF);
                                                        //LED_2(OFF);
                                                        LED_3(OFF);
                                                        LED_4(OFF);
                                                        //LED_5(OFF);
                                                        lowledstep = 0;
                                                        lowpowercut++;
                                                }
                                        }
                                //}
                       
                        }
                        break;
                       
                        
                        
                        
////////////////////////////////////////////////////////////////////////////////////////////
                        default:
                        case M_PowerOFF:
                        {
                //                workingtime.Tcut_flg = disable;
                                SetUltrasound_PWM(0);
                                LED_3(OFF);                       
                                LED_4(OFF);
                                POWER(OFF);
                                Run_Mode = M_WaitKey;
                                button_test = 1;
                                scan_step = 0;
                                t25minstop = T25MIN_STOP;
                                BatteryLV = 0;
                                wt.adc_old = 0;
                                wt.cut = 0;
                                wt.tTemp = 0;
                                wt.adc_gap = 0;
                                wt.adc_new = 0;
                                wt.n = 0;
                                offsetcut = 0;
                                EN_Inverse = 0;
                                batterylow_flg = 0;//0421
                               // t10secstop= 5000;//0417
                               
                        }
                        break;
收藏 评论2 发布时间:2019-4-22 17:12

举报

2个回答
STM1024 回答时间:2019-4-22 22:49:16
你是如何从低功耗模式下唤醒的?看不到相关的代码啊?
Kevin_G 回答时间:2019-4-23 10:03:46
跑飞了没有
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版