STM32控制蜂鸣器

来源:互联网 发布:大数据导论 编辑:程序博客网 时间:2024/05/16 13:44


main.c具体的代码如下

/*----------------------------------------------------------------------------------功能描述:普通延时控制LED2闪烁,间隔250ms,定时器控制蜂鸣器和LED3硬件平台:STM32F103 开发板作者:求是07固件库  :V3.5-----------------------------------------------------------------------------------*//* Includes ------------------------------------------------------------------*/#include "stm32f10x.h"#include "led.h"#include "delay.h"#include "key.h"#include "timer.h"#include "beep.h"uint8_t BeepFlag=1;int main(void){LED_Init();//LED初始化  <span style="white-space:pre"></span>KEY_Init();//按键初始化  <span style="white-space:pre"></span>SysTick_Init();//延时初始化BEEP_Init();   //蜂鸣器初始化TIM2_Base_Init(1000);//10Khz的计数频率,计数到1000为100ms    <span style="white-space:pre"></span>while(1){Delay_ms(250);  LED2_REV;}}void TIM2_IRQHandler(void)   //TIM2中断{ static uint8_t i;if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源 {TIM_ClearITPendingBit(TIM2, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源 if(BeepFlag)   BEEP_REV; //取反蜂鸣器else BEEP_OFF;i++;if(i==20){BeepFlag=!BeepFlag;LED3_REV;i=0;}}}

蜂鸣器的原理图如下

beep.c的源代码如下:
<pre name="code" class="cpp">/*-------------------------------------------------------------------------------文件名称:beep.c文件描述:根据硬件连接配置蜂鸣器端口,打开对应的寄存器        备    注:无---------------------------------------------------------------------------------*/#include "beep.h"/*-------------------------------------------------------------------------------程序名称:BEEP_Init程序描述:初始化BEEP相关端口,打开端口时钟,配置端口输出  输入参数:无返回参数:无备    注:无---------------------------------------------------------------------------------*/void BEEP_Init(void){  GPIO_InitTypeDef GPIO_InitStructure;  //打开PB口时钟  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//PB8引脚设置  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//端口速度  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//端口模式,此为输出推挽模式  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//初始化对应的端口  GPIO_Init(GPIOB, &GPIO_InitStructure);}
其中的一些宏定义:

#define BEEP_ON GPIO_SetBits(GPIOB,GPIO_Pin_8)#define BEEP_OFF GPIO_ResetBits(GPIOB,GPIO_Pin_8)#define BEEP_REV GPIO_WriteBit(GPIOB, GPIO_Pin_8,(BitAction)(1-(GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8))))


使用库函数比较方便 

0 0
原创粉丝点击