STM32F030控制蜂鸣器

发布者:东土大唐88最新更新时间:2019-05-23 来源: eefocus关键字:STM32F030  控制蜂鸣器  main()函数 手机看文章 扫描二维码
随时随地手机看文章

(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  控制蜂鸣器  main()函数 引用地址:STM32F030控制蜂鸣器

上一篇:STM32F030控制LED
下一篇:STM32延时函数的四种方法

推荐阅读最新更新时间:2024-11-09 16:31

STM32F030单片机的翻转引脚介绍
1. 第一个工程 翻转引脚 上一篇文章我们详细介绍了 STM32F030 从复位时取得复位向量,系统初始化,然后跳转到 main( ) 函数的过程。下面我们结合一个最简单的例子,对 Cube 库的使用做一个简单的介绍。我们用 Keil 打开下面这个工程:STM32Cube_FW_F0_V1.11.0ProjectsSTM32F030R8-NucleoExamplesGPIOGPIO_IOToggleMDK-ARMProject.uvprojx 编译下载运行此代码,会看到一个 LED灯(连至MCU的 PA5引脚)不停地闪烁。为了完成这个简单的功能,我们看到这个工程里包含了不少文件: 如果是初次用这种库的方式做开发,乍一看还真
[单片机]
<font color='red'>STM32F030</font>单片机的翻转引脚介绍
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved