【STM32】GPIO之蜂鸣器
00. 目錄
文章目錄
- 00. 目錄
- 01. 蜂鳴器簡介
- 02. 硬件設(shè)計(jì)
- 03. 程序示例一
- 04. 程序示例二
- 05. 程序?qū)嵗?/li>
- 06. 附錄
- 07. 聲明
01. 蜂鳴器簡介
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計(jì)算機(jī)、打印機(jī)、復(fù)印機(jī)、報(bào)警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時(shí)器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。
探索者 STM32F4 開發(fā)板板載的蜂鳴器是電磁式的有源蜂鳴器,如圖 7.1.1 所示:
這里的有源不是指電源的“源”,而是指有沒有自帶震蕩電路,有源蜂鳴器自帶了震蕩電路,一通電就會(huì)發(fā)聲;無源蜂鳴器則沒有自帶震蕩電路,必須外部提供 2~5Khz 左右的方波驅(qū)動(dòng),才能發(fā)聲。
02. 硬件設(shè)計(jì)
蜂鳴器在硬件上也是直接連接好了的,不需要經(jīng)過任何設(shè)置,直接編寫代碼就可以了。蜂鳴器的驅(qū)動(dòng)信號(hào)連接在 STM32F4 的 PF8 上。
圖中我們用到一個(gè) NPN 三極管(S8050)來驅(qū)動(dòng)蜂鳴器,R61 主要用于防止蜂鳴器的誤發(fā)聲。當(dāng) PF.8 輸出高電平的時(shí)候,蜂鳴器將發(fā)聲,當(dāng) PF.8 輸出低電平的時(shí)候,蜂鳴器停止發(fā)聲。
03. 程序示例一
蜂鳴器不叫
beep.h文件
#ifndef __BEEP_H__ #define __BEEP_H__#include "sys.h"//蜂鳴器初始化 void BEEP_Init(void);#define BEEP PFout(8)#endif /*__BEEP_H__*/beep.c文件
#include "beep.h"//蜂鳴器初始化 void BEEP_Init(void) {GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_DOWN;//使能時(shí)鐘RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//初始化GPIOGPIO_Init(GPIOF, &GPIO_InitStruct);//設(shè)置默認(rèn)低電平GPIO_ResetBits(GPIOF, GPIO_Pin_8); }main.c文件
#include "stm32f4xx.h"#include "delay.h" #include "led.h" #include "beep.h"int main(void) {//初始化delay_init(168);LED_Init();BEEP_Init();//蜂鳴器不叫GPIO_ResetBits(GPIOF, GPIO_Pin_8); }04. 程序示例二
蜂鳴器叫
main.c文件
#include "stm32f4xx.h"#include "delay.h" #include "led.h" #include "beep.h"int main(void) {//初始化delay_init(168);LED_Init();BEEP_Init();GPIO_SetBits(GPIOF, GPIO_Pin_8); }05. 程序?qū)嵗?/h2>
蜂鳴器循環(huán)叫1秒 不叫1秒
main.c
#include "stm32f4xx.h"#include "delay.h" #include "led.h" #include "beep.h"int main(void) {//初始化delay_init(168);LED_Init();BEEP_Init();//蜂鳴器不叫GPIO_ResetBits(GPIOF, GPIO_Pin_8);GPIO_ResetBits(GPIOF, GPIO_Pin_9); delay_ms(1000);//蜂鳴器叫GPIO_SetBits(GPIOF, GPIO_Pin_8);GPIO_SetBits(GPIOF, GPIO_Pin_9);delay_ms(1000);}位帶操作
main.c文件
#include "stm32f4xx.h"#include "delay.h" #include "led.h" #include "beep.h"int main(void) {//初始化delay_init(168);LED_Init();BEEP_Init();//蜂鳴器不叫LED2 = 0;BEEP = 0;delay_ms(1000);//蜂鳴器叫LED2 = 1;BEEP = 1;delay_ms(1000); }06. 附錄
6.1 【STM32】STM32系列教程匯總
網(wǎng)址:【STM32】STM32系列教程匯總
07. 聲明
該教程參考了正點(diǎn)原子的《STM32 F4 開發(fā)指南》
總結(jié)
以上是生活随笔為你收集整理的【STM32】GPIO之蜂鸣器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【STM32】位带原理分析和应用
- 下一篇: 【STM32】GPIO之按键