嵌入式STM32学习——振动传感器

振动传感器的介绍:

四个针脚:AO、DO、GND、VCC

AO针脚:输出连续的模拟信号,可以表示具体的物理量大小。

DO针脚:输出离散的数字信号,只有高电平和低电平两种状态。

GND针脚:接地

VCC针脚:3.3V~5V

硬件的使用:在软件编写程序中使其DO针脚输出低电平时传感器发生震动。(也就是需要芯片引脚接收到DO引脚是否发出低电平)

练习:(用振动传感器让LED亮一秒再熄灭一秒)

shake.h

#ifndef RELAY_H_
#define RELAY_H_



void Relay_Init(void);

#endif

shake.c

#include "stm32f10x.h"
#include "shake.h"


void Shake_Init(void)
{
		GPIO_InitTypeDef shake_initstruct;
	
		RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//ʱÖӵijõʼ»¯

		shake_initstruct.GPIO_Mode=GPIO_Mode_IPU;
		shake_initstruct.GPIO_Pin=GPIO_Pin_0;
		
	
	GPIO_Init(GPIOA, &shake_initstruct);
}

led.h

#ifndef LED_H_
#define LED_H_



void LED_Init(void);

#endif

led.c

#include "led.h"
#include "stm32f10x.h"

//³õʼ»¯LEDµÆµÄº¯Êý¡ª¡ª¡ª¡ªº¯ÊýµÄ¶¨Òå¡¢ÉùÃ÷¡¢µ÷ÓÃ(led.c    led.h  main.c)
void LED_Init(void)
{
	//1.³õʼ»¯Ê±ledÒý½ÅGPIOA1
	GPIO_InitTypeDef  led_initstruct;  //¶¨ÒåGPIOµÄ½á¹¹Ìå
	

	
	//2.³õʼ»¯Ê±ÖÓ
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//ʱÖӵijõʼ»¯
		
		
		
		led_initstruct.GPIO_Pin = GPIO_Pin_1;
		led_initstruct.GPIO_Speed = GPIO_Speed_2MHz;
		led_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;
	
	GPIO_Init(GPIOA,&led_initstruct);  //³õʼ»¯GPIO½á¹¹Ìå
	
	
	
	
	
}

main

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "shake.h"
void delay(uint16_t time) 
{
	uint16_t i=0;
	while(time--)
	{
		i =12000;
		while(i--);
	}

}
 
int  main()
{
	
	
	

	LED_Init();
	Shake_Init();
	
	GPIO_SetBits( GPIOA, GPIO_Pin_1); 
 
	
	
	
	while(1)
	{
		if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)  //读取震动引脚是否震动
		{
			GPIO_ResetBits(GPIOA, GPIO_Pin_1); 
			delay(1000);
			GPIO_SetBits( GPIOA, GPIO_Pin_1); 
			delay(1000);

		}
		else
		{
				GPIO_SetBits( GPIOA, GPIO_Pin_1); 
		}
		
	}
}
		 

 

你可能感兴趣的:(嵌入式STM32学习,stm32,学习,嵌入式硬件)