STM32——震动传感器控制继电器开灯
环境概述:
Windows10 专业版
MDK—Lite 5.25
硬件清单:
1、继电器
2、USB灯
3、SW-1801P震动传感器
4、STM32f103c8t6
注意:
在User文件夹创建相关文件夹以及xx.c和xx.h文件,包含相关的头文件,
一些基本的操作在之前的文章已经写有了
实验步骤:
1、使能APB2中的GPIOA时钟打开
去哪里找相关的函数,也在之前的文章写有了
//1、使能APB2中的GPIOA时钟打开
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
2、配置GPIOA结构体内容
在此之前,在定义结构体
GPIO_InitTypeDef Shake_GPIO_Init;
//下拉输入
Shake_GPIO_Init.GPIO_Mode = GPIO_Mode_IPD;
//设置引脚为A1
Shake_GPIO_Init.GPIO_Pin = GPIO_Pin_1;
Shake_GPIO_Init.GPIO_Speed = GPIO_Speed_10MHz;
3、初始化
GPIO_Init(GPIOA,&Shake_GPIO_Init);
代码:
#include "stm32f10x.h"
#include "shake.h"
void Shake_Init()
{
//定义结构
GPIO_InitTypeDef Shake_GPIO_Init;
//1、使能APB2中的GPIOA时钟打开
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);
//2、配置GPIOA结构体内容
//下拉输入
Shake_GPIO_Init.GPIO_Mode = GPIO_Mode_IPD;
//设置引脚为A1
Shake_GPIO_Init.GPIO_Pin = GPIO_Pin_1;
Shake_GPIO_Init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&Shake_GPIO_Init);
}
main.c文件
通过读取传感器的电平的高低,去判断并控制开灯
如果读取传感器是低电平,那么就实行开灯操作
代码:
#include "stm32f10x.h"
#include "led.h"
#include "Relay.h"
#include "Shake.h"
int main(void)
{
LED_Init();//灯
Relay_Init();//继电器
Shake_Init();//震动传感器
GPIO_SetBits(GPIOA, GPIO_Pin_3);//是引脚3j继电器高电平——关灯
while(1){
//1、通过读取传感器的电平的高低,去判断并控制开灯
//
if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_1 == 0)){
//如果读取传感器是低电平,那么就实行开灯操作
GPIO_ResetBits(GPIOA, GPIO_Pin_3);//开灯
delayTime(1000);//延时
GPIO_SetBits(GPIOA, GPIO_Pin_3);//关灯
}else{
GPIO_SetBits(GPIOA, GPIO_Pin_3);//关灯
}
}
}
总结:
反复练习,记住代码,记住原理,多实操。