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);
	}
}
发布了274 篇原创文章 · 获赞 97 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/imxlw00/article/details/104449032