赞
踩
#include<iostream>
using namespace std;
//定义枚举类型
typedef enum{
Mon=1,
Tue=2,
Wed=3
} week_t;
int main(){
week_t w;
w=Wed; //对星期类型设定指定量
cout << w << endl;
return 0;
}
#include "stm32f10x.h" // Device header #include "MyDelay.h" //自定义延时函数 #include "Delay.h" //官方延迟函数 #include "Button.h" //按键Led驱动 #include "stdio.h" uint8_t KeyNum ; int main(void){ //初始化 Led_Init(); Button_Init(); //按键控制led灯 while(1){ KeyNum = Key_GetNum(); if(KeyNum==1) { Led_One_Turn(); } if(KeyNum==2){ Led_Two_Turn(); } } return 0; }
//头文件 #ifndef Led_h //若没有定义该变量,则定义 #define led_h //LED驱动 void Led_Init(void); //按键初始化,按键用于输入,不用设置输出的速度 void Button_Init(void); //获取是哪个按键被按下 uint8_t Key_GetNum(void); //灯1亮 void Led_One_Turn(void); //灯2亮 void Led_Two_Turn(void); #endif //源文件 #include "stm32f10x.h" #include "Delay.h" #include "stdio.h" //Led初始化 void Led_Init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GI; GI.GPIO_Mode = GPIO_Mode_Out_PP; GI.GPIO_Pin = GPIO_Pin_All; GI.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GI); //设置led灯对应引脚为高电平 GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1); //A0,A1引脚高电平,灯灭 } //按键初始化,按键用于输入,不用设置输出的速度 void Button_Init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //时钟使能 GPIO_InitTypeDef Button; Button.GPIO_Mode = GPIO_Mode_IPU; //上拉输入模式,保持高电平 Button.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_11; //按键所在引脚 Button.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&Button); } //获取是哪个按键被按下 uint8_t Key_GetNum(void){ uint8_t KeyNum=0; //按键1 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1)==0){ //按键按下读取输入数据 Delay_ms(20); //按下抖动 while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0 ); //等待度过按键触底期 Delay_ms(20); //弹起抖动 KeyNum=1; //按键一 } //按键11 if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11)==0){ //读取输入数据 Delay_ms(20); //按下抖动 while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0); //等待度过按键触底期 Delay_ms(20); //弹起抖动 KeyNum=2; //按键二 } return KeyNum; //返回按键号码 } //灯1 void Led_One_Turn(void){ uint8_t Light_Status = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0); if(Light_Status==0) GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); else GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); } //灯2 void Led_Two_Turn(void){ uint8_t Light_Status = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1); if(Light_Status==0) GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_SET); else GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_RESET); }
//光敏蜂鸣器头文件 #ifndef Buzzer #define Buzzer //读取光敏传感器的数据 uint8_t Read_Buzzer_Data(void); //初始化环境 void Buzzer_PhotoResitors_Init(void); //光敏电阻响应 void Reaction_PhotoResitors(void); //蜂鸣器响应 void Buzzer_Ring(void); //蜂鸣器安静 void Buzzer_Slient(void); #endif //源文件 #include "stm32f10x.h" #include "Button.h" #include "Delay.h" //读取光敏传感器的数据 uint8_t Read_Buzzer_Data(void){ return GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13); //读取蜂鸣器引脚数据 } //初始化蜂鸣器和光敏电阻环境 void Buzzer_PhotoResitors_Init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //B端口时钟使能 GPIO_InitTypeDef Buzzer; Buzzer.GPIO_Mode = GPIO_Mode_IPU; //上拉输入,保持光敏电阻在线 Buzzer.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_12; Buzzer.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&Buzzer); GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET); } //蜂鸣器响应,红灯亮 void Buzzer_Ring(void){ GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET); //红灯亮 GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_SET); //绿灯灭 while(1){ GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_RESET); //低电平有效 Delay_ms(200); GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET); Delay_ms(300); GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_RESET); //低电平有效 Delay_ms(300); GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET); Delay_ms(100); GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_RESET); //低电平有效 Delay_ms(200); GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET); Delay_ms(300); break; //要退出循环,不然一直响,也回不到绿灯状态 } } //蜂鸣器安静,绿灯亮 void Buzzer_Slient(void){ GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET); //红灯灭 GPIO_WriteBit(GPIOA,GPIO_Pin_1,Bit_RESET); //绿灯亮 GPIO_WriteBit(GPIOB,GPIO_Pin_12,Bit_SET); //高电平无效 } //光敏电阻响应 void Reaction_PhotoResitors(void){ uint8_t RP = GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13); if(RP==1) Buzzer_Ring(); else Buzzer_Slient(); }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。