我得到了增加频率的程序,当按下按钮时频率应该是恒定的,然后按下应该管理频率继续增加到10Hz,这对我来说随机工作而不使用中断 . 为什么这不起作用?当我按下按钮Im时只增加频率 . 谢谢你的回答

DigitalOut myled(LED3);
InterruptIn button(PA_12);
PwmOut ledPWM(PB_0);

int volatile state=0;

void pb_hit_interrupt (void) {
    state++;
}
int main()
{
    button.mode(PullUp);
    wait(.01);
    button.fall(&pb_hit_interrupt);

    float pulse =0;
    float perioda =0;
    int frequency = 1;
    perioda=1.0f/frequency;
    pulse = (perioda/2.0f);
    while(1) {

        if(state==1){
            frequency++;
            perioda=1.0f/frequency;
            pulse = (perioda/2.0f);
            ledPWM.period(perioda);
            ledPWM.pulsewidth(pulse);
            wait(1.0f);
            if(frequency==10) frequency = 0;
        }

        if(state==2) {
            ledPWM.period(perioda);
            ledPWM.pulsewidth(pulse);
            wait(1.0f);
        }

        if(state > 2) state=0;
    }
}