stm32f103 蜂鸣器代码
时间: 2024-10-17 08:01:55 浏览: 46
STM32F103是一款基于Cortex-M3内核的微控制器,常常用于嵌入式系统中。使用它控制蜂鸣器的基本步骤包括初始化GPIO、配置GPIO作为输出模式以及发送信号使其发声。下面是一个简单的示例代码,假设蜂鸣器连接到PA8引脚:
```c
#include "stm32f10x.h" // 包含STM32的头文件
// 定义蜂鸣器引脚
#define Buzzer_Pin GPIO_Pin_8
#define Buzzer_GPIO GPIOD // 根据实际板子选择合适的GPIO外设
void init_buzzer(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); // 启动GPIOD时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = Buzzer_Pin; // 初始化Buzzer_Pin
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; // 输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 高速推挽
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // 上拉无拉
GPIO_Init(GPIOD, &GPIO_InitStructure); // 初始化GPIOD
}
void play_buzzer(uint8_t duration_ms) {
uint32_t i, j;
for (i = 0; i < duration_ms * 10; ++i) { // 10毫秒一次开关,持续duration_ms毫秒
GPIO_SetBits(GPIOD, Buzzer_Pin); // 开启蜂鸣器
HAL_Delay(1); // 等待1ms
GPIO_ResetBits(GPIOD, Buzzer_Pin); // 关闭蜂鸣器
HAL_Delay(9); // 等待9ms
}
}
int main(void) {
init_buzzer();
play_buzzer(1000); // 播放蜂鸣器声音1秒
while (1);
return 0;
}
```
阅读全文