STM32项目->振动传感器控制继电器开灯
一、STM32项目->振动传感器控制继电器开灯
继电器的工作原理:继电器工作时,电磁铁通电,把衔铁吸下来使D和E接触,工作电路闭合。电磁铁断电时失去磁性,弹簧把衔铁拉起来,切断工作电路。它实际上是用小电流去控制大电流运作的一种“自动开关”。继电器的作用有扩大控制范围、放大、综合信号、自动、遥控、监测。
#include "led.h"
#include "stm32f10x.h"
void LED_Init(void)
{
GPIO_InitTypeDef led_init;
//使能APB2时钟GPIC //rcc.h
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//结构体配置 (需要放在前面) //gpio.h
led_init.GPIO_Mode =GPIO_Mode_Out_PP; //推挽输出
led_init.GPIO_Pin =GPIO_Pin_1;
led_init.GPIO_Speed =GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&led_init);
}
#include "stm32f10x.h"
#include "relay.h"
void Relay_Init()
{
GPIO_InitTypeDef Relay_init ;
//1.使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//2.GPIOA3配置结构体
Relay_init.GPIO_Mode = GPIO_Mode_Out_PP;
Relay_init.GPIO_Pin = GPIO_Pin_3;
Relay_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &Relay_init);
}
#include "shake.h"
#include "stm32f10x.h"
void Shake_Init(void)
{
GPIO_InitTypeDef shake_init;
//1.打开我们的GPIOA
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//2.配置GPIOA的时钟
shake_init.GPIO_Mode = GPIO_Mode_IPU;
shake_init.GPIO_Pin = GPIO_Pin_1;
shake_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &shake_init);
}
int main()
{
LED_Init();
Relay_Init();//继电器IO口初始化
Shake_Init();
GPIO_ResetBits(GPIOA,GPIO_Pin_3);//初始化继电器开关为关闭状态
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
delay(1000);
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
}
else
{
GPIO_ResetBits(GPIOA,GPIO_Pin_3);
}
}
}