Stm32_2:蜂鸣器、按键、继电器

1.蜂鸣器

1.蜂鸣器的种类

蜂鸣器是一种常用的电子发声元器件,采用直流电压供电。广泛应用于计算机,打印机,报警器,电子玩具,汽车电子设备灯等产品中常见的蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。

2.蜂鸣器的控制方式

  • 有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。(频率固定无法控制音色)
  • 无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。(可改变频率来改变音色)

3.区分蜂鸣器

从外观上来看两种蜂鸣器形状相似,有源蜂鸣器底部有黑胶密封。

无源蜂鸣器底部可以看到电路板,两种蜂鸣器都标注有正负极。

4.GPIO控制蜂鸣器

软件设计:

初始化系统:

  • 初始化GPIO外设时钟
  • 初始化蜂鸣器引脚

输出电平控制蜂鸣器

cs 复制代码
#include "buzzer.h"
#include "stm32f10x.h"

void buzzer_init(void)
{
	GPIO_InitTypeDef buzzer_init;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	buzzer_init.GPIO_Pin = GPIO_Pin_5;
	buzzer_init.GPIO_Speed = GPIO_Speed_10MHz;
	buzzer_init.GPIO_Mode = GPIO_Mode_Out_PP;
	
	GPIO_Init(GPIOA,&buzzer_init);
	
	
}

2.按键

1.深入理解GPIO输入

GPIO的特点:

  • 具有内部上拉或下拉的功能
  • 可以使用外部下拉或上拉

按键连接示意图:

即:按键按下时,引脚连接低电平

2.按键控制LED灯

软件设计:

初始化系统:

  • 初始化GPIO外设时钟
  • 初始化按键和LED的引脚

检测按键输入的电平来控制LED灯

cs 复制代码
#include "key.h"
#include "stm32f10x.h"

void Key_Init(void)
{
	GPIO_InitTypeDef key_structure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC,ENABLE);
	
	key_structure.GPIO_Pin = GPIO_Pin_0;
	key_structure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_Init(GPIOA,&key_structure);
	
	key_structure.GPIO_Pin = GPIO_Pin_13;
	key_structure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_Init(GPIOC,&key_structure);
	
}
cs 复制代码
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "buzzer.h"
#include "key.h"
#include "Delay.h"

void delay(uint16_t time)
{
	uint16_t i = 0;
	while(time --)
	{
		i = 12000;
		while(i --);
	}
}

int  main()
{
	
	led_init();
	buzzer_init();
	Key_Init();
	Delay_Init();
	
	GPIO_SetBits(GPIOA,GPIO_Pin_1);//灯灭

   while(1)
	 {
			if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 0)
			{  
				GPIO_ResetBits(GPIOA,GPIO_Pin_1);
			}
			if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13) == 0)
			{
				GPIO_SetBits(GPIOA,GPIO_Pin_1);
			}
			
	 }
		 
   
}

 

注:先让灯灭掉,继电器也一样

3.继电器

1.继电器的工作原理

继电器是一个电控开关,工作原理基于电磁感应,继电器包括一个电磁线圈和一组触点。常用于控制高电流或高电压的电路,例如自动控制原理,电力系统和自动化设备中, 由于可靠性和电气隔离的特性可以实现小电流控制大电流,继电器在各种应用中都有广泛 的用途。

2.继电器的引脚说明

  1. VCC(+):供电正极,连接此引脚到电源,以提供继电器所需的电流

  2. GND(-) : 地,连接此引脚到电源的负极或者地。

  3. IN :控制输入信号,通常用于连接控制信号,当该信号变化,继电器切换状态。

  4. COM(common): 公共端,通常是中间的触点,与常开或常闭触点相连。

  5. NO(Normally Open): 常开接口,继电器吸合前悬空,吸合后于COM连接。

  6. NC(Normally Closed):常闭接口,继电器吸合前与COM连接,吸合后悬空。

3.继电器状态监测

红灯(电源指示灯)亮起,意为正常工作

绿灯(信号指示灯),绿灯亮了,继电器是连接状态,闭合状态,绿灯暗了,继电器是断开状态

杜邦线排查:

首先连接VCC和GND,红灯亮起

是用IN口检测工作电压,如果VCC接3.3V,IN不管接高低电平,绿灯都量,说明3.3V不是工作电压。如果IN接地,绿灯亮;接电源,绿灯灭,说明继电器的工作电压是3.3V,且是低电平连通

3.单片机控制继电器软件开发流程

初始化系统:

  • 初始化继电器IN引脚对应的GPIO外设时钟
  • 初始化继电器IN的引脚GPIO输出模式

输出电平控制继电器开和关

cs 复制代码
#include "stm32f10x.h"
#include "Delay.h"

void Delay_Init(void)
{
	GPIO_InitTypeDef Delay_Initstructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	Delay_Initstructure.GPIO_Pin = GPIO_Pin_0;
	Delay_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
	Delay_Initstructure.GPIO_Speed = GPIO_Speed_10MHz;
	
	GPIO_Init(GPIOA,&Delay_Initstructure);
	
}
cs 复制代码
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "buzzer.h"
#include "key.h"
#include "Delay.h"

void delay(uint16_t time)
{
	uint16_t i = 0;
	while(time --)
	{
		i = 12000;
		while(i --);
	}
}

int  main()
{
	led_init();
	buzzer_init();
	Key_Init();
	Delay_Init();
	
	GPIO_SetBits(GPIOA,GPIO_Pin_0);

   while(1)
	 {

			GPIO_ResetBits(GPIOA,GPIO_Pin_0);
			delay(1000);
			GPIO_SetBits(GPIOA,GPIO_Pin_0);
			delay(1000);		 
	 }
		 
   
}

 
相关推荐
方芯半导体12 小时前
EtherCAT “通信 + 控制“ 的全国产化控制方案,ESC芯片(FCE1323)与国产MCU芯片功能板解析
xml·网络·单片机·嵌入式硬件·网络协议·机器人·自动化
三佛科技-1341638421212 小时前
LP3716NCK 隔离型12V1A 12W茶炉板电源方案典型应用电路与设计关键
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
羽获飞14 小时前
从零开始学嵌入式之STM32——5.GPIO外设
stm32·单片机·嵌入式硬件
望眼欲穿的程序猿14 小时前
串口通信---串口2定时器2
stm32·单片机·嵌入式硬件
望眼欲穿的程序猿14 小时前
STC/Ai8051U 中断列表
单片机·嵌入式硬件·stc
国科安芯15 小时前
航空级PMSM驱动系统中MCU的故障诊断与容错控制策略研究
单片机·嵌入式硬件·安全·架构·制造·安全性测试
帅次15 小时前
系统分析师-信息物理系统分析与设计
stm32·单片机·嵌入式硬件·mcu·物联网·iot·rtdbs
澜莲Alice15 小时前
STM32 MPLAB X IDE 软件安装-玩转单片机-英文版沉浸式安装
stm32·单片机·嵌入式硬件
良许Linux16 小时前
IIC总线的硬件部分的两个关键点:开漏输出+上拉电阻
单片机·嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘16 小时前
单片机基础知识 -- ADC分辨率
单片机·嵌入式硬件