您的位置:首页 > 其它

STM32控制蜂鸣器

2016-08-21 15:12 120 查看
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))))
使用库函数比较方便 
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: