震动感应灯
在user文件夹添加shake文件夹添加shake.c,shake.h文件
//在shake.c #include"sahke.h" #include"stm32f10x.h" void Shake_Init(void) { }//在shake.h #include"stm32f10x.h" void Shake_Init(void);//在main.c里调用Shake_Init();并且添加对应头文件#include"sahke.h",添加sahke.h的文件路径//在shake.c文件函数内补充 void Shake_Init(void) { GPIO_InitTypeDef shake_init;//初始化结构体 //打开GPIOA时钟(DO选择链接到A1引脚) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //配置结构体 shake_init.GPIO_Mode=GPIO_Mode_IPD; shake_init.GPIO_Pin=GPIO_Mode_Pin_1; shake_init.GPIO_Speed=GPIO_Speed_10MHz; //初始化函数 GPIO_Init(GPIOA, &shake_init); }/* GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) 读某一位输入电平(返回 0 或 1) GPIO_ReadInputData(GPIOx) 读整个端口的输入电平(返回 16 位) GPIO_ReadOutputDataBit(GPIOx, GPIO_Pin) 读某一位输出寄存器的当前值 GPIO_ReadOutputData(GPIOx) 读整个端口输出寄存器的当前值 */ //在main.c #include "stm32f10x.h" #include "led.h" #include "jidianqi.h" #include "shake.h" void delay(uint16_t time) { uint16_t i= 0; while(time--) { i=12000; while(i--); } } int main() { LED_Init(); jidianqi_Init(); Shake_Init(); GPIO_SetBits(GPIOC,GPIO_Pin_13);//LED灯关闭 while(1) { if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)==0) GPIO_ResetBits(GPIOC,GPIO_Pin_13);//亮灯 delay(1000); //1秒 GPIO_SetBits(GPIOC,GPIO_Pin_13);//关灯 else { GPIO_SetBits(GPIOC,GPIO_Pin_13);//关灯 } } }