其实很容易想到,蜂鸣器的控制思想和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 }