#include"main.h"
unsigned char rf_ok=0;
unsigned char rf_start=0,rf_data[4]={0};
unsigned char rf_fun=0;
unsigned short rf_time[2]={0},rf_id=0;
void rf_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource3);
EXTI_InitStructure.EXTI_Line=EXTI_Line3;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x03;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x01;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void rf_ctrl(void)
{
if(key_press&K_SET)
{
if(menu==MASTER)
{
menu=TIME;
if(*(unsigned short*)&eeprom_buffer[0]) save=1;
}
else
{
menu=MASTER;
rf_id=0;
*(unsigned short*)&eeprom_buffer[0]=0;
}
}
if(rf_ok)
{
if(menu!=MASTER&&rf_id==*(unsigned short*)&eeprom_buffer[0]&&rf_fun==0x78)
{
if(menu==TIME)
{
menu=BIG_KEY;
}
else if(menu==BIG_KEY)
{
if(menu_sub==0) menu=DIFFICULT;
if(menu_sub==1)
{
if(*(unsigned short*)&eeprom_buffer[2]) save=1;
menu=TIME;
menu_sub=0;
}
}
else if(menu==DIFFICULT)
{
if(menu_sub==0) menu=COLLECT;
if(menu_sub==1)
{
eeprom_buffer[8]=difficult;
save=1;
menu=TIME;
menu_sub=0;
}
}
else if(menu==COLLECT)
{
menu=LIGHT;
}
else if(menu==LIGHT)
{
if(menu_sub==0) menu=SET_TIME;
if(menu_sub==1)
{
eeprom_buffer[9]=light;
save=1;
menu=TIME;
menu_sub=0;
}
}
else if(menu==SET_TIME)
{
if(menu_sub==0) menu=SET_TIMER;
}
else if(menu==SET_TIMER)
{
if(menu_sub==0) menu=TIME;
if(menu_sub)
{
*(unsigned long*)&eeprom_buffer[4]=timer;
save=1;
menu=TIME;
menu_sub=0;
}
}
else if(menu==TIMER)
{
if(menu_sub==0||menu_sub==3)
{
menu_sub=0;
menu=TIME;
}
}
}
if(rf_id==*(unsigned short*)&eeprom_buffer[2]&&rf_fun==0x78)
{
if(menu==TIMER)
{
if(menu_sub==0)
{
menu_sub=1;
}
else if(menu_sub==1)
{
menu_sub=2;
}
}
else
{
menu=TIMER;
}
}
switch(menu)
{
case MASTER:
*(unsigned short*)&eeprom_buffer[0]=rf_id;
break;
case BIG_KEY:
if(rf_id!=*(unsigned short*)&eeprom_buffer[0])
{
menu_sub=1;
*(unsigned short*)&eeprom_buffer[2]=rf_id;
}
else
{
rf_id=*(unsigned short*)&eeprom_buffer[2];//display current id
}
break;
case DIFFICULT:
if(rf_id==*(unsigned short*)&eeprom_buffer[0]&&rf_fun==0xd2)//难度
{
menu_sub=1;
if(difficult<20) difficult++;
else difficult=1;
}
break;
case COLLECT:
break;
case LIGHT:
if(rf_id==*(unsigned short*)&eeprom_buffer[0]&&rf_fun==0xd2)//亮度调整
{
menu_sub=1;
if(light<10) light++;
else light=0;
}
break;
case SET_TIME:
if(rf_id==*(unsigned short*)&eeprom_buffer[0])
{
if(rf_fun==0x78)
{
if(menu_sub==1) menu_sub=2;//set hour
else if(menu_sub==2) menu_sub=3;//set day
else if(menu_sub==3) menu_sub=4;//set month
else if(menu_sub==4) menu_sub=5;//set year
else if(menu_sub==5) {menu_sub=0; set_time=1;}//set rtc
}
if(rf_fun==0xd2)
{
if(menu_sub==0) menu_sub=1;//set minute
if(menu_sub==1)
{
set.second=0;
if(set.minute<59) set.minute++;
else set.minute=0;
}
if(menu_sub==2)
{
if(set.hour<23) set.hour++;
else set.hour=0;
}
if(menu_sub==3)
{
if(set.day<31) set.day++;
else set.day=1;
}
if(menu_sub==4)
{
if(set.month<12) set.month++;
else set.month=1;
}
if(menu_sub==5)
{
if(set.year<2099) set.year++;
else set.year=2018;
}
}
}
break;
case SET_TIMER:
if(rf_id==*(unsigned short*)&eeprom_buffer[0])
{
if(rf_fun==0xd2)
{
if(menu_sub)//模式
{
if(timer==52000)
timer=61800;
else if(timer==61800)
timer=66666;
else if(timer==66666)
timer=88888;
else if(timer==88888)
timer=100000;
else if(timer==100000)
timer=111100;
else if(timer==111100)
timer=121200;
else if(timer==121200)
timer=131400;
else if(timer==131400)
timer=210000;
else if(timer==210000)
433射频收发参考程序C语言(STM32)
4星 · 超过85%的资源 需积分: 2 169 浏览量
2018-08-29
15:24:18
上传
评论 7
收藏 4KB RAR 举报
weixin_43091811
- 粉丝: 2
- 资源: 1