第一阶段
看原理图找名字
创建工程文件和封装可以直接在这个连接上看,完整版我已经发布了http://blog.qmgua.com/?id=147或者https://blog.csdn.net/weixin_51471186/article/details/118789267
还是接着之前连接上的讲解,对于使用蜂鸣器时首先要知道它对应的引脚标号是什么?这是我们要去看原理图,一般情况去找下图
在原理图里的配件上找到
然后就知道在对应引脚是如何知道用到这一模块
去对应MCP中找到标有BEEP的口
这样就知道蜂鸣器的模块对应的IO在哪呢接下来就是应用。
第二阶段
写代码
将对应的beep.c,beep.h将蜂鸣器初始化应用,后再main.c中调用。
//beep.h
#ifndef __LED_H
#define __LED_H
void LED_Init(void);
#endif
//beep.c
#include "stm32f4xx.h"
#include "beep.h"
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;/*为什么用推挽,可以看原理图可以提供低电平,
蜂鸣器的一端已经接了vcc*/
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_DOWN;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_Init(GPIOF,&GPIO_InitStructure);
GPIO_ResetBits(GPIOF,GPIO_Pin_8);
}
对于上面模块的每一条语句的意思意义,我已经放在http://blog.qmgua.com/?id=147的第三阶段里了可以直接去看。
//main.c
#include "sys.h"
#include "usart.h"
#include "led.h"
#include "delay.h"
#include "beep.h"
int main(void)
{
delay_init(168);
LED_Init();
BEEP_Init();
while(1)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
GPIO_ResetBits(GPIOF,GPIO_Pin_8);//BEEP=0;鸣
delay_ms(500);
GPIO_SetBits(GPIOF,GPIO_Pin_9);
GPIO_SetBits(GPIOF,GPIO_Pin_8);//BEEP=1;灭
delay_ms(500);
}
}
文章转载至