Stm32f103c8t6学习——2.有源蜂鸣器仿真教程

目录

  • **一、有源蜂鸣器原理图**
  • **1.PNP接法**
  • **2.NPN接法**
  • **二、有源蜂鸣器代码**
  • **三、项目(代码+仿真)分享链接**
  • 一、有源蜂鸣器原理图


    元器件提示
    电阻:res
    蜂鸣器:buzzer

    1.PNP接法


    看VCC和地哪一个直接接在蜂鸣器上
    PNP接法:低电平触发

    2.NPN接法


    看VCC和地哪一个直接接在蜂鸣器上
    NPN接法:高电平触发

    二、有源蜂鸣器代码

    和LED灯一样,驱动GPIO引脚变成指定电平即可触发
    buzzer.c文件

    #include "buzzer.h"
    #include "stm32f10x.h"
    void BUZZER_Init(void)
    {
    	//声明一个结构体,名字是GPIO_InitStructure
    	GPIO_InitTypeDef GPIO_InitStructure;
    	//使能GPIOC的时钟,ENABLE代表使能
    	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//GPIOC
    	//设置引脚为推挽输出Out_PP
    	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
    	//定义引脚为哪一号引脚,GPIO_Pin_13就是13号引脚
    	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_15; 
    	 //设置引脚的速度50MHz
    	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; 
    	 //初始化GPIO,初始化哪个引脚就对应哪个
    	GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化GPIOC,所以引脚对应PC13和PC15
    	GPIO_SetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_15); //PC13和PC15引脚拉高电平
    }
    

    buzzer.h头文件

    #ifndef __BUZZER_H
    #define __BUZZER_H
    	void LED_Init(void);
    #endif
    

    main.c文件
    PNP接法:低电平触发

    #include "stm32f10x.h"
    #include  "buzzer.h"
    #include "delay.h"
    int main(void) 
    { 
    	delay_init();
    	LED_Init();		
    	while(1){ 		//pnp接法
    		GPIO_ResetBits(GPIOC,GPIO_Pin_13); // 低电平触发
    		delay_ms(100); //响100ms
    		GPIO_SetBits(GPIOC,GPIO_Pin_13);
    		delay_ms(500);   //停500ms
    	}
    }
    

    NPN接法:高电平触发

    #include "stm32f10x.h"
    #include  "buzzer.h"
    #include "delay.h"
    int main(void) 
    { 
    	delay_init();
    	LED_Init();		
    	while(1){ 		//npn接法
    		GPIO_SetBits(GPIOC,GPIO_Pin_15); // 高电平触发
    		delay_ms(200);   //响200ms
    		GPIO_ResetBits(GPIOC,GPIO_Pin_15); 
    		delay_ms(400); //停400ms
    	}
    }
    

    三、项目(代码+仿真)分享链接

    百度网盘
    链接:https://pan.baidu.com/s/1pcVtAcER2mAwnQnyRL3aXQ
    提取码:p8q4

    作者:小鹏要学嵌入式

    物联沃分享整理
    物联沃-IOTWORD物联网 » Stm32f103c8t6学习——2.有源蜂鸣器仿真教程

    发表回复