历史上的今天
今天是:2024年09月11日(星期三)
2018年09月11日 | STM32F030控制蜂鸣器
2018-09-11 来源: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延时函数的四种方法
史海拾趣
|
MSDN中在关于BIB文件的MEMORY Section部分中提到RAMIMAGE类型时说: Specifies that the region should be treated like RAM. The memory addresses in this entry can physically correspond to RAM or to linear flash memory. 原文见: http ...… 查看全部问答> |
|
1. 帮忙说明下linux(ubuntu)中,configure的参数问题,--prefix=/路径 和--exec-prefix=/路径,还有with-xxx-prefix=/路径 又什么区别吗 2. 说能解释下\"sed\",\"set\",\"eval\",\"tee\" and \"getopt\" in shell,推好能推荐个教程,找了半天没什 ...… 查看全部问答> |
|
[DIY]再造二十四小时的感动【古典版II】 自制QS18-12辉光电子钟 附百图 前几天刚刚完成QS30-1管的辉光钟,有不少朋友在向我讨教如何制作。说实话,就个人而言,我更喜欢QS18-12辉光管。 QS30-1的辉光管制作贴在这里:https://bb ...… 查看全部问答> |
|
声明:展现在你眼前的所有文档都非本人的智慧所编写,而只是转发,但所有文档也都非具有相同层次的专业人士所作,你需要的是学习与思考,融合与创新。你的灵感,将来自於你的头脑,你的知识,确来自于其他人的智慧。包容糟粕,取其精华,你必能智於 ...… 查看全部问答> |
|
系统是一个手持设备,用电池供电,电量低时,通过外部充电器充电。 平时不使用时,进入休眠状态,通过按键(有三个不同功能的按键)唤醒(IO口电平变化中断)结束休眠。 如何才能保证系统能可靠的运行? 就是每次在休眠中,按键按下都能够唤醒, ...… 查看全部问答> |
|
具体就是想问一下 : 当我用PC下载完程序后, 要让TIVA C Launchpad 单独运行,没法再提供USB接口; TIVA C Launchpad有没有简单的供电方法。… 查看全部问答> |




