1.先上图
2.接线图
3.实现效果
触碰一下震动传感器,灯亮起,过一会儿灯熄灭
4.原理
当震动传感器io为低电平打开继电器,高电平关闭继电器,触碰震动传感器时io接收低电平。
附上代码
在这里插入代码片
#include "stm32f10x.h"
#include "relay.h"
#include "led.h"
#include "shake.h"
#include "exti.h"
void delay(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i=12000;
while(i--);
}
}
## 主函数
int main()
{
Shake_Init();//震动io调用
LED_Init();//ledio调用
Relay_Init();//继电器io调用调用各个模块的io口,io口默认高阻态无电平
exti_init();//中断io调用
//拉高函数GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
//GPIO_ResetBits(GPIOA,GPIO_Pin_3);//拉低函数,将3电平拉低
GPIO_SetBits(GPIOA,GPIO_Pin_3);//拉高函数,将3电平拉高,初始化继电器为关闭状态
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==0)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_3);//拉低函数,将3电平拉低,打开继电器,初始化继电器为关闭状态
delay(1000);
GPIO_SetBits(GPIOA,GPIO_Pin_3);//拉高函数,将A3电平拉高
}
else
{
GPIO_SetBits(GPIOA,GPIO_Pin_3);//拉高函数,将3电平拉高,初始化继电器为关闭状态
}
}
}
***
## 振动传感器.c文件
***
#include "stm32f10x.h"
#include "shake.h"
void Shake_Init()//驱动振动传感器
{
GPIO_InitTypeDef shake_init;//结构体变量名
//打开gpioA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//配置gpioA结构体
shake_init.GPIO_Pin = GPIO_Pin_0;
shake_init.GPIO_Speed=GPIO_Speed_10MHz;
shake_init.GPIO_Mode =GPIO_Mode_IPD;
//gpioA初始化
GPIO_Init(GPIOA, &shake_init);
}
## 继电器.c文件
#include "relay.h"
#include "stm32f10x.h"
void Relay_Init(void)
{
GPIO_InitTypeDef Relay_init;//结构体变量名
//1.打开继电器gpioA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
//2.gpioA3结构体的配置
Relay_init.GPIO_Pin =GPIO_Pin_3;//选择引脚
Relay_init.GPIO_Speed=GPIO_Speed_10MHz;//选择电平大小,初始状态无电平
Relay_init.GPIO_Mode =GPIO_Mode_Out_PP;//用推挽输出
//3.gpio初始化
GPIO_Init(GPIOA, &Relay_init);//选择gpio端口,加入配置好的结构体
}
项目背景 最近项目里有个webpack版本较老的项目,由于升级和换框架暂时不被leade...
1.现在复习的感觉就是:马上要有一大波僵尸涌过来,但老子连向日葵都还没种! 2...
戳蓝字“ CSDN云计算 ”关注我们哦 作者 | 刘丹 出品 | CSDN云计算IDCSDNcloud ...
详解Spring mvc ant path的使用方法 概要: 任何一个WEB都需要解决URL与请求处理...
IViewLocationExpander API ExpandViewLocations Razor视图路径,视图引擎会搜索...
20210323第一家量产国产化蓝牙AOA高精度定位基站生态合能培训会上海站现场直播下...
堆 Heap Heap:可以迅速找到一堆数中的 最大 或者 最小 值的数据结构。 将根节点...
这里尊托云数小编参考了几篇文章特为大家整理下,用到的朋友多支持一下了。 进行...
WebService端代码 复制代码 代码如下: /// summary /// 上传文件到远程服务器 //...
Epoll 是个很老的知识点,是后端工程师的经典必修课。这种知识具备的特点就是研...