历史上的今天
今天是:2025年06月26日(星期四)
2019年06月26日 | STM32控制蜂鸣器
2019-06-26 来源:eefocus
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初始化
KEY_Init();//按键初始化
SysTick_Init();//延时初始化
BEEP_Init(); //蜂鸣器初始化
TIM2_Base_Init(1000);//10Khz的计数频率,计数到1000为100ms
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的源代码如下:
/*-------------------------------------------------------------------------------文件名称: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))))
使用库函数比较方便
上一篇:stm32的adc总结
下一篇:STM32按键控制灯
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:30 编辑 记得去年竞赛的时候,绕有兴趣地拿给一个有项目经验的朋友看, 由于工作繁忙的缘故,那个朋友说:天哪,谁能在这么短的时间内作出这么多东西啊?当时我就给他解释:有很多东西都是大家训练很多遍的 ...… 查看全部问答> |
|
前几个月,在网上发了一篇“痛批3G网络监控之三点害处”,引起了很多行业内人士对3G网络热烈讨论,有的朋友认为3G用于监控还不是很成熟,也有朋友对3G用于监控行业还是充满了希望。上次贴子中总结3G网络三个害处分别是:速度慢,不稳定和费用高。就 ...… 查看全部问答> |
|
现在wince6.0的sd卡驱动的睡眠唤醒的过程模拟了一个sd card拔出和sd card插入的过程。 也就是说按下睡眠键的时候,sd card存在于卡套中,驱动会做一个sd card拔出的模拟过程;当机器唤醒的时候sd 驱动监测到卡在,就模拟一个卡插入的过程。这样的 ...… 查看全部问答> |
|
遇到一些使用ce4.2的一体机,有的机的方案把任务栏完全锁死,运行 explorer不会出来任务栏,也有的能出来,但一直在最下文隐藏,请问有没办法把任务栏调出来显示,显示后,又有什么办法能把它完全关闭(不是隐藏)应该是关闭explorer进程?… 查看全部问答> |
|
ce4.2下串口1,2都好了,串口3只能发出去不能收,串口4打开失败。谁能帮我分析下可能的问题吗? 我已经根据网上提示在debug.c文件里添加了一句关闭调试串口的语句。 platform.reg文件里中: 前面范围一段如下: [HKEY_LOCAL_MACHINE\\Drivers\\ ...… 查看全部问答> |





