Stm32f103c8t6(proteus仿真)学习——2.有源蜂鸣器
·
一、有源蜂鸣器原理图
元器件提示
电阻: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
更多推荐
已为社区贡献6条内容
所有评论(0)