02、原子战舰 蜂鸣器实验(寄存器)

硬件设计

蜂鸣器的驱动信号连接在 STM32F1 的 PB8 上。
在这里插入图片描述

beep.h

我们这里通过位带操作来实现某个 IO 口的输出控制, BEEP 就直接代表了 PB8 的输出状态。我们只需要令 BEEP=1,就可以让蜂鸣器发声。

#ifndef __BEEP_H
#define __BEEP_H
#include "sys.h"
#define BEEP PBout(8) // BEEP,蜂鸣器接口
void BEEP_Init(void); //初始化
#endif

beep.c

PB8 要使用高8位CRH寄存器。

#include "beep.h"
//初始化 PB8 为输出口.并使能这个口的时钟
//蜂鸣器初始化
void BEEP_Init(void)
{
	RCC->APB2ENR|=1<<3; //使能 PORTB 时钟
	GPIOB->CRH&=0XFFFFFFF0;
	GPIOB->CRH|=0X00000003; //PB.8 推挽输出
	BEEP=0; //关闭蜂鸣器输出
}

main.c

#include "sys.h"
#include "delay.h"
#include "led.h"
#include "beep.h"
int main(void)
{
	Stm32_Clock_Init(9); //系统时钟设置
	delay_init(72); //延时初始化
	LED_Init(); //初始化与 LED 连接的硬件接口
	BEEP_Init(); //初始化蜂鸣器端口
	while(1)
	{
		LED0=0; //点亮 DS0
		BEEP=0; //关闭蜂鸣器
		delay_ms(300);
		LED0=1; //关闭 DS0
		BEEP=1; //打开蜂鸣器
		delay_ms(300);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值