历史上的今天
今天是:2025年05月23日(星期五)
2019年05月23日 | STM32F030控制蜂鸣器
2019-05-23 来源:eefocus
(1)main()函数中:
int BeeTime=0;
int soundSta=0;
void main()
{
TIM2_Init();
soundBee(1);//长响一声
soundBee(0);//短响一声
}
void TIM2_Init()
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_TimeBaseStructure.TIM_Period = (TIM_CLK / 200000) - 1;
TIM_TimeBaseStructure.TIM_Prescaler = 1999;
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_SetAutoreload(TIM2, ((TIM_CLK / 200000) - 1));
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // 打开捕获比较中断 TIM_IT_Update
TIM_Cmd(TIM2, ENABLE); //开启时钟
}
/***********************
功能:蜂鸣器启动
sta:1为成功,0为失败
***********************/
void soundBee(int sta)
{
DOOR_PWR1(1);
if(sta==1)
{
soundSta=0;
BeeTime = 80;
}else{
soundSta=1;
BeeTime = 20;
}
}
(2)hardware_conf.h函数中:
#define DOOR_PWR1(tmp) GPIOA->ODR=tmp?(GPIOA->ODR|1<<1):(GPIOA->ODR&(~(1<<1))) //蜂鸣器
(3)stm32f10x_it.c函数中:
extern int BeeTime;
void TIM2_IRQHandler(void)
{
if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
if(BeeTime<0)
{
BeeTime++;
if(BeeTime==0)
{
DOOR_PWR1(1);
BeeTime=20;
}
}
if(BeeTime>0||soundSta==2)
{
if(BeeTime>0) BeeTime--;
if(BeeTime==0)
{
if(soundSta==0)
{
DOOR_PWR1(0);
}
else if(soundSta==1)
{
DOOR_PWR1(0);
BeeTime=-10;
soundSta=2;
}
else
{
DOOR_PWR1(0);
soundSta=0;
}
}
}
}
else if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)
{
TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);
}
}
上一篇:STM32F030控制LED
下一篇:STM32延时函数的四种方法
史海拾趣
|
这两天在编写测试6410 IIC,发现一个非常奇怪的问题, 读数据时会产生数据终止,不是每次都会,但多读了几次就一定会产生数据异常。异常信息如下: Exception \'Data Abort\' (4): Thread-Id=01840006(pth=85aa48d4), Pr ...… 查看全部问答> |
|
调用KeInitializeSpinLock时出现如下错误: ntoskrnl.lib(ntoskrnl.exe) : error LNK2005: _KeInitializeSpinLock@4 already defined in usbpnp.obj 该如何解决啊?… 查看全部问答> |
|
看到 辩论一下--ARM嵌入式系统有必要跑操作系统吗的帖子,觉得 daicheng 说的很对。用不用操作系统,用什么操作系统完全取决于应用。我最近的产品里用了Keil的RL-ARM,觉得很适合我们的产品:简单,实用。我也还在看RT-thread,个人觉得这是一个很 ...… 查看全部问答> |
|
关于Startup.s解析; <<< Use Configuration Wizard in Context Menu >>>;******************************************************************************;; Startup.s - Startup code for Stellaris.;; Copyright (c) 2006-2007 Lum ...… 查看全部问答> |
|
$(\'flv_s44\').innerHTML=(AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://player.youku.com/player.php/sid/XMTY1MTI3NzUy/v.swf\', \'qu ...… 查看全部问答> |
|
Sitara AM335x 学习资料汇总(一) 时间仓促,就先整理了这些,都是论坛中神人们的大作 1.TI Sitara入门资料分享13-Sitara现场实验培训课资料 https://bbs.eeworld.com.cn/thread-357619-1-4.html 2.[TI Sitara] TI Sitara AM335x系统之硬件设计 ...… 查看全部问答> |




