#include "piezo.h" volatile uint32_t *PiezoSTick, PiezoSTickCur, Freq; void init_piezo(volatile uint32_t *SysTickCnt) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitTypeDef gpio; GPIO_StructInit(&gpio); gpio.GPIO_Mode = GPIO_Mode_Out_PP; gpio.GPIO_Pin = GPIO_Pin_0; GPIO_Init(GPIOB, &gpio); PiezoSTick = SysTickCnt; return; } void run_piezo() { uint8_t pstate = 0x0; PiezoSTickCur = *PiezoSTick; while((*PiezoSTick - PiezoSTickCur) <= 1000) { Freq = *PiezoSTick; while((*PiezoSTick - Freq) <= 1); if (pstate) { pstate = ~pstate; GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_SET); } else { pstate = ~pstate; GPIO_WriteBit(GPIOB, GPIO_Pin_0, Bit_RESET); } } return; } void deinit_piezo(void) { return; }