STM32震动感应灯
Posted 一只小阿大嗷
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32震动感应灯相关的知识,希望对你有一定的参考价值。
项目硬件平台及开发环境
硬件平台
stm32最小系统
软件平台
Keil uVision5
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
接线图
代码
main.c
#include "stm32f10x.h"
#include "led.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();
Relay_Init();
Shake_init();
while(1){
/*
//ledµÆ
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
delay(1000);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
delay(1000);
*/
//¼ÌµçÆ÷
//GPIO_ResetBits(GPIOA, GPIO_Pin_3);
GPIO_SetBits(GPIOA, GPIO_Pin_3);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1) == 0)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_3);
GPIO_ResetBits(GPIOC, GPIO_Pin_13);
delay(1000);
GPIO_SetBits(GPIOA, GPIO_Pin_3);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
}else{
GPIO_SetBits(GPIOA, GPIO_Pin_3);
GPIO_SetBits(GPIOC, GPIO_Pin_13);
}
}
}
led.h
#include "stm32f10x.h"
void Led_init(void);
led.c
#include "stm32f10x.h"
#include "led.h"
void Led_init(void)
{
GPIO_InitTypeDef Led_init;
//1.ʹÄÜAPB2µÄʱÖÓGPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
//2.½á¹¹ÌåÅäÖÃ
Led_init.GPIO_Mode = GPIO_Mode_Out_PP;
Led_init.GPIO_Pin = GPIO_Pin_13;
Led_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOC, &Led_init);
}
relay.h
#include "stm32f10x.h"
void Relay_Init(void);
relay.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_Mode = GPIO_Mode_Out_PP;
Relay_init.GPIO_Pin = GPIO_Pin_3;
Relay_init.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOA,&Relay_init);
}
shake.h
#include "stm32f10x.h"
void Shake_init(void);
shake.c
#include "stm32f10x.h"
#include "shake.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);
}
以上是关于STM32震动感应灯的主要内容,如果未能解决你的问题,请参考以下文章