STM32資料包:
百度網(wǎng)盤下載鏈接:鏈接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888
提取碼:8888
一、任務(wù)描述
二、任務(wù)實(shí)施
觀察電路圖,核心板PD14連接底板中的P2外接排針,將正負(fù)極接上直流電壓即可持續(xù)發(fā)聲,頻率固定。LED的PA0連接底板的D1燈。
1、ActiveBeep工程文件夾創(chuàng)建
步驟1:復(fù)制工程模板“1_Template”重命名為“4_ActiveBeep”
步驟2:修改項(xiàng)目工程名,先刪除projects文件夾內(nèi)除了Template.uvprojx文件外的所有內(nèi)容并修改為“ActiveBeep.uvprojx”。并刪除output/obj和output/lst中的所有文件。
步驟3:運(yùn)行“ActiveBeep.uvprojx”打開目標(biāo)選項(xiàng)“Options for Target”中的“Output”輸出文件,并修改可執(zhí)行文件名稱為“ActiveBeep”點(diǎn)擊“OK”保存設(shè)置。最后點(diǎn)擊“Rebuild”編譯該工程生成ActiveBeep文件。
步驟4:復(fù)制“2_LEDTest”中的"1_LED"文件復(fù)制到hardware中。
步驟5:新建“2_ActiveBeep”文件,并在該文件夾下新建“ActiveBeep.c”和“ActiveBeep.h”兩個(gè)文件。
步驟6:工程組文件中添加“l(fā)ed.c”和“ActiveBeep.c”文件。
步驟7:目標(biāo)選項(xiàng)添加添加頭文件路徑
2、函數(shù)編輯
(1)主函數(shù)編輯
控制蜂鳴器和 LED,每次循環(huán)時(shí)蜂鳴器和 LED 的狀態(tài)會交替改變,并且每次循環(huán)時(shí)延遲的時(shí)間會逐漸增加,直到 temp 達(dá)到 200,然后重新從 10 開始。這樣就會產(chǎn)生一種周期性變化的效果,蜂鳴器和 LED 會以不同的頻率閃爍。
步驟1:端口初始化準(zhǔn)備
//函數(shù)初始化,端口準(zhǔn)備
delay_init(); //啟動(dòng)滴答定時(shí)器
LED_Init(); //LED初始化
BeepInit(); //有源蜂鳴器初始化
步驟2:循環(huán)時(shí)延遲的時(shí)間會逐漸增加,直到 temp 達(dá)到 200,然后重新從 10 開始。這樣就會產(chǎn)生一種周期性變化的效果,蜂鳴器和 LED 會以不同的頻率閃爍。
while(1)
{
delay_ms(temp);// 延遲temp毫秒
temp += 100; // 增加延遲時(shí)間10毫秒
beep = !beep; // 切換蜂鳴器狀態(tài)(取反)
LED1 = !LED1; // 切換LED狀態(tài)(取反)
if(temp == 2000)// 如果延遲時(shí)間達(dá)到200毫秒,則重置為10毫秒
temp = 100;
}
(2)LED IO初始化函數(shù)(LED_Init())
/*********************************************************************
@Function : 開發(fā)板LED IO初始化
@Parameter : N/A
@Return : N/A
**********************************************************************/
void ExpLEDInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure; // 定義 GPIO 初始化結(jié)構(gòu)體變量
/* 時(shí)鐘使能 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能 GPIOA 時(shí)鐘
/* 引腳配置 */
GPIO_InitStructure.GPIO_Pin = LED_ALL; // D1-D8->PA0-PA7
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 設(shè)置引腳為推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 設(shè)置引腳的輸出速度為 50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); // 應(yīng)用以上配置到 GPIOA 上
GPIO_SetBits(GPIOA, LED_ALL); // 將 GPIOA 的引腳 PA0-PA7 設(shè)置為高電平,使得開發(fā)板 LED 滅
}
(3)蜂鳴器 IO初始化(BeepInit())
初始化PD14端口,并為推挽輸出。
/*********************************************************************
@Function : 開發(fā)板蜂鳴器 IO初始化
@Parameter : None
@Return : None
**********************************************************************/
void BeepInit(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*時(shí)鐘使能*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
/*引腳配置*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14; // 將開發(fā)板四個(gè)按鍵連接到PE8~PE15
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//設(shè)置 GPIO 輸出速度為 50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_Init(GPIOD, &GPIO_InitStructure);
/*引腳初始電平設(shè)置*/
GPIO_SetBits(GPIOD,GPIO_Pin_14);
}
3、宏定義
(1)源文件添加頭文件
步驟1:按鍵功能文件中添加相關(guān)頭文件,源文件報(bào)錯(cuò)消失部分
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "ActiveBeep.h"
步驟2:主函數(shù)添加所需的led和KeyBoard頭文件,主源文件部分報(bào)錯(cuò)消失
/***********Hardweare***************/
#include "led.h"
#include "ActiveBeep.h"
(2)有源蜂鳴器頭文件編輯
點(diǎn)擊編譯顯示報(bào)錯(cuò)
步驟1:創(chuàng)建一個(gè)宏定義保護(hù)
#ifndef _SINGLEKEY_H
#define _SINGLEKEY_H
#endif
步驟2:添加宏定義
#define beep PDout(14) // 定義了一個(gè)宏,用于操作PD14引腳的輸出狀態(tài),此處假設(shè)使用的是外部定義的函數(shù)或宏
步驟3:添加led宏定義
#define LED_ALL GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7
步驟3:添加函數(shù)聲明
void BeepInit(void); // 函數(shù)聲明,用于初始化蜂鳴器
步驟4:添加數(shù)據(jù)類型和宏的頭文件
#include "stdint.h" // 包含標(biāo)準(zhǔn)的C語言頭文件,用于定義標(biāo)準(zhǔn)的整數(shù)類型
4、知識鏈接
(1)有源蜂鳴器
蜂鳴器是一種能將音頻信號轉(zhuǎn)化聲音信號的發(fā)音器件,在家電器上,在銀行、公安的報(bào)警系統(tǒng)中,在電子玩具、游戲機(jī)中都得到普遍應(yīng)用。蜂鳴器是一種能將音頻信號轉(zhuǎn)化聲音信號的發(fā)音器件,在家電器上,在銀行、公安的報(bào)警系統(tǒng)中,在電子玩具、游戲機(jī)中都得到普遍應(yīng)用。蜂鳴器主要用于提示或報(bào)警,根據(jù)設(shè)計(jì)和用途的不同,能發(fā)出音樂聲、汽笛聲、蜂鳴聲、報(bào)警聲、聲鈴聲等各種不同的聲音。
內(nèi)部自帶振蕩源,將正負(fù)極接上直流電壓即可持續(xù)發(fā)聲,頻率固定。
(2)無源蜂鳴器
內(nèi)部不帶振蕩源,需要控制器提供振蕩脈沖才可發(fā)聲,調(diào)整提供振蕩脈沖的頻率,可發(fā)出不同頻率的聲音
文章來源:http://www.zghlxwxcb.cn/news/detail-841971.html
5、工程測試
文章來源地址http://www.zghlxwxcb.cn/news/detail-841971.html
到了這里,關(guān)于【STM32嵌入式系統(tǒng)設(shè)計(jì)與開發(fā)】——7有源蜂鳴器應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!