目录
1、先创建LED、震动传感器、继电器的.c文件和.h文件于同一个文件夹
2、对3个.c文件进行寄存器模式的配置以及打开各自的GPIO时钟完成GPIO口的初始化
3、将3个.c文件对应的.h文件包含在main函数以及把各自的.h文件路径加入到main.c文件
1、创建led、振动传感器、继电器的.c和.h文件
各自的文件夹底下创建.c和.h文件。
2、对GPIO口的初始化及时钟配置
拿振动传感器的举例:
先定义GPIO配置相关的结构体shake_init
接着GPIOA的时钟的使能在system_stm32f10x.c的rcc.h文件种找出
然后对GPIO口的工作模式进行选择(pin、mode、speed)
其中工作模式选择下拉输入
震动传感器没有震动时输出高电平、震动输出低电平,单片机需要检测到一个下降沿信号然后让继电器闭合点灯,所以选择下拉输入,因为下拉电阻的缘故可以确保单片机能够准确识别出低电平。
speed:选个低功耗的就行
pin:接的哪个脚选哪个,这里接的是pin1
3、main函数
#include "led.h"//led
#include "stm32f10x.h"
#include "relay.h"//继电器
#include "shake.h"//震动传感器
void delay(uint16_t time)
{
uint16_t i= 0;
while(time--)
{
i=12000;
while(i--);
}
}
int main()
{
LED_Init();//led函数初始化
Relay_Init();//继电器初始化
Shake_Init();//振动传感器初始化
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 0)//震动
{
GPIO_ResetBits(GPIOC,GPIO_Pin_13);//led点亮
delay(1000);//1s
GPIO_SetBits(GPIOC,GPIO_Pin_13);//led熄灭
else
{
GPIO_SetBits(GPIOC,GPIO_Pin_13);//不震动保持熄灭
}
}
}
3个.h文件均不在main.c文件所在路径,所以需要加入对应的路径才能找到.h文件