Использование зуммера без задержки [C] STM32 - PullRequest
0 голосов
/ 21 сентября 2018

я использую прерыватель от STM32 для подсчета скорости вращения вентилятора.В начале счета - я даю звуковой сигнал с:

void Beep(int ton) {
    uint16_t i = 0;
    do {
        GPIO_SetBits(GPIOD, GPIO_Pin_4);
        Delay(ton);
        GPIO_ResetBits(GPIOD, GPIO_Pin_4);
        Delay(ton);
        i++;
    } while (i < 50);
}

Конечно, прерывание прерывания получает больше отсчетов.Как реализовать зуммер, не используя функцию задержки?

// Start beep, begin measurement
        if (sec_cnt == 3 && measuring == TRUE) {
//          Beep(5000);
            }

        // Stop beep, measurement done
        if (sec_cnt == timer + 3 && measuring == TRUE) {
//          Beep(4000);
        }
...