STM32小实验三--让蜂鸣器响起来

1.实验目的

驱动蜂鸣器以 500ms 间隔鸣响。

2.硬件清单

  • STM32
  • ST-Link
  • 蜂鸣器

3.硬件连接

4.代码

4.1beep.c

c 复制代码
#include "beep.h"
#include "sys.h"
//初始化GPIO函数
void beep_init(void)
{
    GPIO_InitTypeDef gpio_initstruct;
    //打开时钟
    __HAL_RCC_GPIOA_CLK_ENABLE();
    //调用GPIO初始化函数
    gpio_initstruct.Pin = GPIO_PIN_8;
    gpio_initstruct.Mode = GPIO_MODE_OUTPUT_PP;
    gpio_initstruct.Pull = GPIO_PULLUP;
    gpio_initstruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA,&gpio_initstruct);
    //关闭蜂鸣器
    beep_off();
}
//打开蜂鸣器的函数
void beep_on(void)
{
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET);
}
//关闭蜂鸣器的函数
void beep_off(void)
{
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);
}

这个代码和点亮LED的代码几乎一模一样,我将函数的名字都换为了beep,然后是驱动GPIOA的8引脚驱动蜂鸣器。

4.2beep.h

c 复制代码
#ifndef __BEEP_H__
#define __BEEP_H__

void beep_init(void);
void beep_on(void);
void beep_off(void);

#endif

这个没什么可说的

4.3main.c

c 复制代码
#include "sys.h"
#include "delay.h"
#include "beep.h"
int main(void)
{
    HAL_Init();                         /* 初始化HAL库 */
    stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */
    beep_init();
    while(1)
    { 
        beep_on();
        delay_ms(500);
        beep_off();
        delay_ms(500);
    }
}
 

这个就是让蜂鸣器间隔0.5秒响一次,也很简单。
完结

相关推荐
振南的单片机世界21 小时前
HAL_Delay(1000)真准吗?SysTick的1ms基准从哪来
arm开发·stm32·单片机·嵌入式硬件
NPE~1 天前
[嵌入式]从0到1开发环境搭建
stm32·嵌入式硬件·教程·clion·stmcubemx·stmcubeclt
项目題供诗1 天前
STM32-ADC模数转换器(十八)
stm32·单片机·嵌入式硬件
YYRAN_ZZU1 天前
Ubuntu22.04搭建QEMU嵌入式开发环境全攻略
linux·嵌入式硬件·ubuntu
_YouziTech_1 天前
【STM32】U8G2图形库应用--菜单设计与开发
stm32·单片机·嵌入式硬件·oled·开机动画·图形库
2301_805962931 天前
ESP32 使用 PlatformIO 编译点灯程序
stm32·esp32
Silicore_Emma1 天前
芯谷科技—D55126 漏电保护器专用集成电路
嵌入式硬件·新能源充电桩·芯谷科技·漏电保护器·高性能cmos漏电保护器·智能断路器/物联网配电·家用漏电保护
国科安芯1 天前
商业航天级抗辐照全双工RS-485/RS-422收发器ASM491S2Y的技术特性与应用研究
运维·网络·单片机·嵌入式硬件·安全·架构·安全性测试
国科安芯1 天前
ASP7A84AS高精度抗辐照线性稳压器技术特性与应用分析
单片机·嵌入式硬件·安全·架构
say_fall1 天前
模拟量输入输出技术超详细知识点总结
linux·开发语言·嵌入式硬件·学习·php