正点原子stm32F407学习笔记3——蜂鸣器实验

一、硬件设计

蜂鸣器为有源蜂鸣器,当 PF.8 输出高电平的时候,蜂鸣器将发声,当 PF.8 输出低电平的时候,蜂鸣器停止发声,硬件原理图如下
正点原子stm32F407学习笔记3——蜂鸣器实验_第1张图片

二、软件设计

1、新建beep.c文件
打开keil软件中上一节的LED模板,建一个文件,然后保存在HARDWARE→BEEP 文件夹下面,保存为 beep.c。
正点原子stm32F407学习笔记3——蜂鸣器实验_第2张图片
在beep.c中输入如下代码

#include "stm32f4xx.h" 	    
//BEEP IO初始化
void BEEP_Init(void)
{    	 
  GPIO_InitTypeDef  GPIO_InitStructure;//配置GPIO所用的结构体

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//时钟使能函数,PF8为输出口,所以使能这两个口的时钟,GPIOF又在AHB1总线下,所以调用AHB1函数

  //GPIOF8初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//BEEP所对应的IO口
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉,在硬件原理图中看出下拉beep停止发声
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
	
  GPIO_ResetBits(GPIOF,GPIO_Pin_8);//GPIOF8拉低

}

点击保存,这只是保存在本地文件夹中,但此时beep.c还没有加入到工程中,双击HARDWARE文件夹,将beep.c添加到工程中可以看到HARDWARE文件夹下的文件
正点原子stm32F407学习笔记3——蜂鸣器实验_第3张图片
2、新建beep.h头文件
用同样的方式新建头文件,输入代码如下

#ifndef __BEEP_H
#define __BEEP_H

void BEEP_Init(void);

#endif

再把头文件添加到工程中
正点原子stm32F407学习笔记3——蜂鸣器实验_第4张图片
3、主函数代码

#include "stm32f4xx.h"//顶层头文件
#include "led.h"
#include "delay.h"
#include "beep.h"

int main ()
{
	delay_init(168);//初始化延时函数,此模板默认设置是168
	BEEP_Init();//初始化BEEP
	LED_Init();//初始化led
	while(1)
	{
		PFout(9) = 1;//拉高,LED灭
		GPIO_SetBits(GPIOF,GPIO_Pin_8);//拉高,BEEP响
		delay_ms(500);
		
		PFout(9) = 0;//拉低,亮
		GPIO_ResetBits(GPIOF,GPIO_Pin_8);//GPIOF8拉低
		delay_ms(500);
	}
}

将程序编译烧录进开发板可以看到led跟随蜂鸣器响停闪烁。

你可能感兴趣的:(stm32单片机,stm32,单片机,学习)