#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(); } }
|