历史上的今天
返回首页

历史上的今天

今天是: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); 

  }  

}

 


推荐阅读

史海拾趣

GigPeak公司的发展小趣事

在快速发展的过程中,GigPeak深刻认识到与产业链上下游企业合作的重要性。公司积极寻求与芯片制造商、设备供应商和系统集成商等合作伙伴建立长期稳定的合作关系。通过资源共享、技术交流和联合研发等方式,GigPeak与合作伙伴共同构建了一个完整的产业生态体系。这一生态体系的建立不仅提升了GigPeak的市场竞争力,还促进了整个行业的健康发展。

Holy Stone公司的发展小趣事

在追求业务发展的同时,Holy Stone始终注重品质提升和环境管理。公司陆续通过了ISO9001、ISO14001、QS9000、ISO/TS16949等国际认证,确保了产品的高品质和环保性。这些认证不仅提升了公司的品牌形象和市场竞争力,还为客户提供了更加可靠的产品和服务。此外,公司还积极履行社会责任,在环境治理、社会参与等方面做出了具体贡献。

宜源科技(ETERNAL)公司的发展小趣事

随着国内市场的饱和,宜源科技公司积极寻求海外市场的发展机会。公司加强与国际知名企业的合作,共同开发新产品,拓展市场份额。同时,宜源科技还积极参加国际展会和论坛,提升品牌知名度和影响力。通过不懈的努力,宜源科技的产品已经成功进入多个国家和地区,实现了国际化发展。

Apex Tool Group公司的发展小趣事

宜源科技公司深知品质对于企业长远发展的重要性。因此,公司从原材料采购到生产流程控制,再到产品出厂检验,都严格遵循国际标准和行业规范。通过不断提升产品品质,宜源科技赢得了客户的信赖和市场的认可,逐渐树立起自己的品牌形象。

CNC Tech公司的发展小趣事

CNC Tech公司深知,在竞争激烈的电子行业中,品质是赢得客户信任和市场口碑的关键。因此,公司始终坚持品质至上的原则,从原材料采购到生产制造的每一个环节都严格把控品质。CNC Tech还建立了完善的品质管理体系,通过严格的质量检测和持续的技术改进,确保每一台出厂的设备都能达到客户的期望和要求。正是凭借这种对品质的执着追求,CNC Tech赢得了广大客户的信赖和好评。

Elpida Memory公司的发展小趣事

尽管Elpida Memory已经不复存在,但其在DRAM领域的技术和经验仍然对全球半导体产业产生了深远的影响。Elpida Memory在技术研发、生产管理和市场营销等方面的经验,为后来的半导体企业提供了宝贵的借鉴和参考。同时,Elpida Memory的失败也提醒了半导体企业需要时刻保持警惕和创新精神,以应对日益激烈的市场竞争和技术变革。

问答坊 | AI 解惑

关于6410 IIC读写AT24C02!做过的请进!

  这两天在编写测试6410 IIC,发现一个非常奇怪的问题,   读数据时会产生数据终止,不是每次都会,但多读了几次就一定会产生数据异常。异常信息如下: Exception \'Data Abort\' (4): Thread-Id=01840006(pth=85aa48d4), Pr ...…

查看全部问答>

如何解决error LNK2005

调用KeInitializeSpinLock时出现如下错误: ntoskrnl.lib(ntoskrnl.exe) : error LNK2005: _KeInitializeSpinLock@4 already defined in usbpnp.obj  该如何解决啊?…

查看全部问答>

请高手指点!!

现在我做的项目中会使用到声音设置的功能。上网查了一些资料,以下是接口实现: int CSMMCSetting_SetVolumeValue(int nValue) {         int nVolume;         UINT id;         ...…

查看全部问答>

承接上一贴:如果你在应用中用到的操作系统是哪个呢?

看到 辩论一下--ARM嵌入式系统有必要跑操作系统吗的帖子,觉得 daicheng 说的很对。用不用操作系统,用什么操作系统完全取决于应用。我最近的产品里用了Keil的RL-ARM,觉得很适合我们的产品:简单,实用。我也还在看RT-thread,个人觉得这是一个很 ...…

查看全部问答>

LM3s8962体验之七……关于Startup.s解析

关于Startup.s解析; <<< Use Configuration Wizard in Context Menu >>>;******************************************************************************;; Startup.s - Startup code for Stellaris.;; Copyright (c) 2006-2007 Lum ...…

查看全部问答>

一个很简单的问题

怎么样判断430引脚状态?比如我设P2.4为输入,判断他状态是用 “P2IN&BIT4==1" "P2IN&&BIT4==1" "P2IN&BIT4==BIT4" "P2IN&&BIT4==BIT4" "P2IN&BIT4!=0" "P2IN&&BIT4!=0" ? 哪几个正确或者哪个准确 ...…

查看全部问答>

牛B人做的牛B机器人玩魔方

$(\'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 学习资料汇总(一)

Sitara AM335x 学习资料汇总(一) 时间仓促,就先整理了这些,都是论坛中神人们的大作 1.TI Sitara入门资料分享13-Sitara现场实验培训课资料 https://bbs.eeworld.com.cn/thread-357619-1-4.html 2.[TI Sitara] TI Sitara AM335x系统之硬件设计 ...…

查看全部问答>

ADC12

如图所示,我选择ADC12的触发源为TA1,但程序运行到中断的断点处查看,发现SHS高低2位都为0,不解,求赐教~…

查看全部问答>

项目文件丢失的问题

在MPLAB IDE中建立的项目,通常会使用相对目录,这样在项目复制到其它位置时也可以正常编译。 但是当项目包含的文件有不在项目所在目录及子目录时,MPLAB IDE就会使用绝对路径。即使文件在项目的上一级目录或者相邻目录中,也不会自动转换为相对目 ...…

查看全部问答>