#include <stm32f10x.h>
void delay(void)
{
uint32_t i;
for (i = 0; i < 8000000; i++);
}
void delay_short(void)
{
uint32_t i;
for (i = 0; i < 8000; i++); // i的最大值決定蜂鳴器的音調
}
void beep(void)
{
uint16_t i;
for (i = 0; i < 1000; i++)
{
GPIOB->ODR |= GPIO_Pin_8;
delay_short();
GPIOB->ODR &= ~GPIO_Pin_8;
delay_short();
}
}
int main(void)
{
GPIO_InitTypeDef init;
init.GPIO_Pin = GPIO_Pin_8;
init.GPIO_Speed = GPIO_Speed_50MHz;
init.GPIO_Mode = GPIO_Mode_Out_OD; // 因為蜂鳴器是接在三極體上的,所以輸出模式必須設為開漏輸出
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_Init(GPIOB, &init);
while (1)
{
beep();
delay();
}
}