接线
STM32 和 震动传感器 的接线
VCC——3.3 GND——GND DO——GPIOA1
STM32 和 继电器 的接线
VCC——3.3 GND——GND IN——GPIOA3
LED 和 继电器 的接线
代码
main.c
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "shake.h"
#include "relay.h"
void delay(uint16_t time)
{
uint16_t i=0;
while(time--)
{
i=10000;
while(i--);
}
}
int main()
{
Shake_Init();
Relay_Init();
GPIO_SetBits(GPIOA, GPIO_Pin_3);
while(1)
{
if( GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 0 )
{
GPIO_ResetBits(GPIOA, GPIO_Pin_3);
delay(1000);
GPIO_SetBits(GPIOA, GPIO_Pin_3);
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_3);
}
}
}
shake.c
#include "shake.h"
#include "stm32f10x.h"
void Shake_Init(void)
{
GPIO_InitTypeDef shake_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
shake_init.GPIO_Mode = GPIO_Mode_IPD;
shake_init.GPIO_Pin = GPIO_Pin_1;
shake_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA, &shake_init);
}
shake.h
#include "stm32f10x.h"
void Shake_Init(void);
relay.c
#include "relay.h"
#include "stm32f10x.h"
void Relay_Init(void)
{
GPIO_InitTypeDef Relay_init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);
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);
}
relay.h
#include "stm32f10x.h"
void Relay_Init(void);
效果
|