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))))使用库函数比较方便
相关文章推荐
- [置顶] ARM开发(3)基于STM32的矩阵键盘控制蜂鸣器
- [置顶] ARM开发(10)基于STM32的通用定时器中断控制蜂鸣器响
- STM32 控制74HC595 驱动点阵 文字能移动
- STM32时钟控制RCC
- STM32 控制lcm液晶ILI9341驱动的液晶驱动程序(续)
- STM32控制APM飞控(二)MAVLINK源码集成到stm32工程中
- 单片机远程控制步进电机、LED灯和蜂鸣器
- 【STM32 .Net MF开发板学习-08】远程PLC读写控制
- stm32----通过电调控制无刷电机
- (转)C# 控制蜂鸣器发声
- 关于利用USMART控制stm32单片机调试助手XCOM输入的函数
- TQ2440使用定时器产生PWM,控制蜂鸣器发声
- Ubuntu下控制蜂鸣器
- STM32控制超声波测距模块HC-SR04
- stm32控制mpu9250九轴传感器
- Linux-2.6.32.2内核在mini2440上的移植(十七)---移植PWM控制蜂鸣器驱动 .
- STM32 (Cortex-M3) 中NVIC(嵌套向量中断控制)的理解
- STM32互补PWM输出使能控制
- STM32中断控制的流程
- (17/06/25)STM32学习->GPIO输出控制LED