首页 > 技术文章 > stm32打怪升级之邂逅蜂鸣器

bebox 2017-07-28 15:24 原文

其实很容易想到,蜂鸣器的控制思想和led都差不多,为什么还再写一遍同样的知识呢

在这里,我并不想为了再重复上节的内容,只是再看普中蜂鸣器例子的时候,有感而发,我们写的代码,成功运行的代码.c都可以当作自己的app文件存放起来,比如led,蜂鸣器,数码管,陀螺仪等等等等,或者还是已经写好了的算法,方便以后使用,现在终于意识到了这样做的重要性。

另外,再捋一捋写蜂鸣器的思路

创建一个蜂鸣器项目,使用工程模版创建工程,因为蜂鸣器是外设且由gpio口对引脚输出高低电平进行控制,所以我们需要同样得使用rcc.h和gpio.h外设库,同样再新建一个beep.c工程文件和beep.h,在beep.h中声明蜂鸣器相应的控制函数,同样,在工程文件下对gpio和rcc初始化设置

蜂鸣器控制函数中写入相应的控制代码,最后,由主函数进行调用。就是这么简单。

 1 #include "beep.h"
 2 
 9 void BEEP_Init()      
10 {
11     GPIO_InitTypeDef GPIO_InitStructure;   
12 
13     SystemInit();
14     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);  
15 
16
17     GPIO_InitStructure.GPIO_Pin=BZ;       
18     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;        
19     GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;     
20     GPIO_Init(GPIOB,&GPIO_InitStructure);   
21 }
22 
23      #救援声
29 void sound1() 
30 {
31     u32 i=5000;
32     while(i--)               
33     {
34         GPIO_SetBits(GPIOB,BZ);       
35         delay(i);
36         GPIO_ResetBits(GPIOB,BZ);     
37         delay(i--);
38     }    
39 }
      #警报声
40 void sound2() 41 { 42 u32 i=1000; 43 while(i--) 44 { 45 GPIO_SetBits(GPIOB,BZ); 46 delay(i); 47 GPIO_ResetBits(GPIOB,BZ); 48 delay(i--); 49 } 50 }

 

推荐阅读