#include "usually.h"
#include "usart.h"
#include "oled.h"
#include "dht11.h"
#include "rtc.h"
#include "delay.h"
#include "stm32f10x_adc.h"
#include <string.h>
#include "BSP_Config.h"
#include "gpio.h"
#include "gsm.h"
#define ADC_CH0 0
#define ADC_CH1 1
#define ADC_CH2 2
#define ADC_CH3 3
#define SEC 0
#define MIN 1
#define HOUR 2
#define DATE 3
#define MON 4
#define YEAR 6
#define MODE_NORMAL 0
#define MODE_SET_HOUR 1
#define MODE_SET_MIN 2
#define MODE_SET_SEC 3
#define MODE_SET_YEAR 4
#define MODE_SET_MON 5
#define MODE_SET_DATE 6
#define MODE_SET_HUMI_HIGH 8
#define MODE_SET_TEMP_HIGH 7
#define MODE_SET_LIGHT 9
#define KEY_MENU_IN PBin(0)
#define KEY_ADD_IN PBin(1)
#define KEY_SUB_IN PBin(2)
#define Motor1_A_run { GPIO_SetBits(GPIOB,GPIO_Pin_8); GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_ResetBits(GPIOB,GPIO_Pin_10);GPIO_ResetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_AB_run { GPIO_SetBits(GPIOB,GPIO_Pin_8); GPIO_SetBits(GPIOB,GPIO_Pin_9); GPIO_ResetBits(GPIOB,GPIO_Pin_10);GPIO_ResetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_B_run { GPIO_ResetBits(GPIOB,GPIO_Pin_8);GPIO_SetBits(GPIOB,GPIO_Pin_9); GPIO_ResetBits(GPIOB,GPIO_Pin_10);GPIO_ResetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_BC_run { GPIO_ResetBits(GPIOB,GPIO_Pin_8);GPIO_SetBits(GPIOB,GPIO_Pin_9); GPIO_SetBits(GPIOB,GPIO_Pin_10); GPIO_ResetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_C_run { GPIO_ResetBits(GPIOB,GPIO_Pin_8);GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_SetBits(GPIOB,GPIO_Pin_10); GPIO_ResetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_CD_run { GPIO_ResetBits(GPIOB,GPIO_Pin_8);GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_SetBits(GPIOB,GPIO_Pin_10); GPIO_SetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_D_run { GPIO_ResetBits(GPIOB,GPIO_Pin_8);GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_ResetBits(GPIOB,GPIO_Pin_10);GPIO_SetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_DA_run { GPIO_SetBits(GPIOB,GPIO_Pin_8); GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_ResetBits(GPIOB,GPIO_Pin_10);GPIO_SetBits(GPIOB,GPIO_Pin_11);}
#define Motor1_STOP_run { GPIO_ResetBits(GPIOB,GPIO_Pin_8); GPIO_ResetBits(GPIOB,GPIO_Pin_9);GPIO_ResetBits(GPIOB,GPIO_Pin_10);GPIO_ResetBits(GPIOB,GPIO_Pin_11);}
#define motorSpdDelayUs 1100
extern struct Data_Time timer;
unsigned char *pUart1_Rxd;
unsigned int uart1_RxNum=0;
unsigned char Num_TXD=0;
unsigned char Uart1_TxBuf[256]={0,2,3,};
unsigned char Uart1_RxBuf[256];
unsigned char *pUart2_Rxd;
unsigned int uart2_RxNum=0;
unsigned char uart2_TxNum=0;
unsigned char Uart2_TxBuf[256]={0,2,3,};
unsigned char Uart2_RxBuf[256];
char line1str[17]="Welcome to use!";
char line2str[17]="Wating gsm... ";
char line3str[17]=" ";
char line4str[17]=" ";
uint8_t dht11_buf[5];
uint8_t nowtemp,nowhumi;
uint8_t thalmflg;
uint16_t adtemp[12]={0};
uint16_t light_adc,set_lit_high,lit_high;
uint8_t almtmp_high,almhumi_high;
uint8_t mode_status;
uint8_t flashflg;
uint8_t settimeflg;
uint8_t solid1flg,solid2flg,winflg;
unsigned char settime[8]={0x00,30,12,0x6,10,0x01,15};
char recephonenum[12]="13538510586";
char phonenum_flash;
uint8_t adci=0;
char strLs[32];
void Key_init(void){
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void Solid_Init(){
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void Motor_Init(){
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
void Adc_Init(void)
{
RCC->APB2ENR|=1<<2;
GPIOA->CRL&=0XFFFF0000;
RCC->APB2ENR|=1<<9;
RCC->APB2RSTR|=1<<9;
RCC->APB2RSTR&=~(1<<9);
RCC->CFGR&=~(3<<14);
RCC->CFGR|=2<<14;
ADC1->CR1&=0XF0FFFF;
ADC1->CR1|=0<<16;
ADC1->CR1&=~(1<<8);
ADC1->CR2&=~(1<<1);
ADC1->CR2&=~(7<<17);
ADC1->CR2|=7<<17;
ADC1->CR2|=1<<20;
ADC1->CR2&=~(1<<11);
ADC1->SQR1&=~(0XF<<20);
ADC1->SQR1&=0<<20;
ADC1->SMPR2&=0XFFFFF000;
ADC1->SMPR2|=7<<9;
ADC1->SMPR2|=7<<6;
ADC1->SMPR2|=7<<3;
ADC1->SMPR2|=7<<0;
ADC1->CR2|=1<<0;
ADC1->CR2|=1<<3;
while(ADC1->CR2&1<<3);
ADC1->CR2|=1<<2;
while(ADC1->CR2&1<<2);
}
u16 Get_Adc(u8 ch)
{
ADC1->SQR3&=0XFFFFFFE0;
ADC1->SQR3|=ch;
ADC1->CR2|=1<<22;
while(!(ADC1->SR&1<<1));
return ADC1->DR;
}
uint16_t adc_avg(void)
{
uint8_t i;
uint32_t sum=0;
uint16_t ret=0;
for(i=0;i<12;i++) sum+=adtemp[i];
ret= sum/12;
return ret;
}
void motor_Foreward(void)
{
Motor1_A_run;
delay_us(motorSpdDelayUs);
Motor1_AB_run;
delay_us(motorSpdDelayUs);
Motor1_B_run;
delay_us(motorSpdDelayUs);
Motor1_BC_run;
delay_us(motorSpdDelayUs);
Motor1_C_run;
delay_us(motorSpdDelayUs);
Motor1_CD_run;
delay_us(motorSpdDelayUs);
Motor1_D_run;
delay_us(motorSpdDelayUs);
Motor1_DA_run;
delay_us(motorSpdDelayUs);
}
void motor_Backward(void)
{
Motor1_DA_run;
delay_us(motorSpdDelayUs);
Motor1_D_run;
delay_us(motorSpdDelayUs);
Motor1_CD_run;
delay_us(motorSpdDelayUs);
Motor1_C_run;
delay_us(motorSpdDelayUs);
Motor1_BC_run;
delay_us(motorSpdDelayUs);
Motor1_B_run;
delay_us(motorSpdDelayUs);
Motor1_AB_run;
delay_us(motorSpdDelayUs);
Motor1_A_run;
delay_us(motorSpdDelayUs);
}
void Show_Normal(void){
strncpy(line1str,"tmp:99C/hm:99%RH",16);
line1str[4]=0x30+nowtemp/10;
line1str[5]=0x30+nowtemp%10;
line1str[11]=0x30+nowhumi/10;
line1str[12]=0x30+nowhumi%10;
OLED_8x16Str(0,0,line1str);
if(winflg){
strncpy(line2str,"lit:99 /wn:open ",16);
}else{
strncpy(line2str,"lit:99 /wn:close",16);
}
line2str[4]=0x30+light_adc/41/10;
line2str[5]=0x30+light_adc/41%10;
OLED_8x16Str(0,2,line2str);
strncpy(line3str, "s1:open s2:open ",16);
if(solid1flg) {
line3str[3]='o';line3str[4]='p';line3str[5]='e';line3str[6]='n';line3str[7]=' ';
}else{
line3str[3]='c';line3str[4]='l';line3str[5]='o';line3str[6]='s';line3str[7]='e';
}
if(solid2flg) {
line3str[11]='o';line3str[12]='p';line3str[13]='e';line3str[14]='n';line3str[15]=' ';
}else{
line3str[11]='c';line3str[12]='l';line3str[13]='o';line3str[14]='s';line3str[15]='e';
}
OLED_8x16Str(0,4,line3str);
line4str[0]= 0x30+ timer.w_year%1000%100%10;
line4str[1]= '/';
line4str[2]= 0x30+timer.w_month/10;
line4str[3]= 0x30+ timer.w_month%10;
line4str[4]= '/';
line4str[5]= 0x30+timer.w_date/10;
line4str[6]= 0x30+ timer.w_date%10;
line4str[7]= ' ';
line4str[8]= 0x30+ timer.hour/10;
line4str[9]= 0x30+ timer.hour%10;
line4str[10]= ':';
line4str[11]= 0x30+timer.min/10;
line4str[12]= 0x30+ timer.min%10;
line4str[13]= ':';
line4str[14]= 0x30+timer.sec/10;
line4str[15]= 0x30+timer.sec%10;
OLED_8x16Str(0,6,line4str);
}
链接:https://pan.baidu.com/s/1AXIBoaKfDw_ITSXsO0ucUQ 提取码:aeue
|