找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2064|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

互聯(lián)網(wǎng)遠(yuǎn)程控制

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:136435 發(fā)表于 2016-8-10 15:26 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"

#include "exti.h"
#include "ex_out.h"
#include "ex_in.h"
#include "W5500.h"
#include "net.h"
#include "value.h"
#include "fu_dhcp.h"
#include "flash.h"
#include "dht12.h"

/********************************************************************/
/* 本程序僅供學(xué)習(xí)參考,未經(jīng)作者允許,不得用于任何商業(yè)用途                                  */
/* 本程序?yàn)镕uhome互聯(lián)網(wǎng)遠(yuǎn)程控制終端靜系列專用程序                            */
/* 適用于硬件平臺  采用W5500+STM32F103C8T6 64K+20K                                                  */                                                                            */
/* 單片機(jī)相關(guān)配置,I/O口定義,定時器,串口,中斷等初始化函數(shù)                   */
/* 本程序用于硬件設(shè)備接入fuhome.net 平臺進(jìn)行遠(yuǎn)程控制(手機(jī)APP/微信/WEB */
/* 版本:v1.2 2016年6月30日                                                                                                        */
/* 龍劍奮斗                                                                                                                                                */
/* 定期更新,敬請關(guān)注——開放,交流,深入,進(jìn)步                                                        */
/* Copyright  未來之家 實(shí)驗(yàn)室,讓科技融入生活                                        */
/********************************************************************/


int main(void)
{
        U8 i=0;
        U8 Data_Have=0;//0 沒有數(shù)據(jù) 1有數(shù)據(jù),第一次運(yùn)行時寫入固定數(shù)據(jù)

         
         
         SystemInit();                          //系統(tǒng)時鐘初始化為72M          SYSCLK_FREQ_72MHz
        delay_init(72);             //延時函數(shù)初始化
        NVIC_Configuration();//設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級,2位響應(yīng)優(yōu)先級
         Uart_Init(9600);                 //波特率 9600
        
          //KEY_Init();              //IO初始化
    //EXTIX_Init();
    Timerx_Init(99,7100);//定時器3延時 10ms

          Ex_in_Init();
          Ex_out_Init();
          DHT12_Init();

          //讀取工作參數(shù)
          STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)fu_temp,62);
         
                //是否需要寫入
                if(fu_temp[0]!=0xac||fu_temp[1]!=0xa2)
                {
                        //第一次需要寫入數(shù)據(jù)了
                        STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)fu_index,62);
                  //讀取工作參數(shù)
                        STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)fu_temp,62);
    }
               
                //如果不對,那說明單片機(jī)有問題,進(jìn)入死循環(huán)
                if(fu_temp[0]!=0xAc||fu_temp[1]!=0xA2)
                {
                        while(1)
                        {
                                SYS=0;
                                OUT=1;
                                IN=1;
                                delay_ms(200);
                                SYS=0;
                                OUT=0;
                                IN=1;
                                delay_ms(200);
                                SYS=0;
                                OUT=0;
                                IN=0;
                                delay_ms(200);
                        }
    }
               
               
                SYS=0;
                OUT=1;
                IN=1;
                delay_ms(200);
                SYS=0;
                OUT=0;
                IN=1;
                delay_ms(200);
                SYS=0;
                OUT=0;
                IN=0;
                delay_ms(200);
                                

                //是否進(jìn)入設(shè)置
                Set_Flag=Key_Scan();
                while(Set_Flag)//設(shè)置完成必須重啟才能
                {
                        SYS=0;
                        OUT=0;
                        IN=0;
                        delay_ms(500);
                        SYS=1;
                        OUT=1;
                        IN=1;
                        delay_ms(500);
                }   
               
                //分析工作模式及設(shè)置參數(shù)
                //1/IP模式 0自動獲取 1固定IP 2/工作模式 0遠(yuǎn)控 1透傳
                 Get_IP=fu_temp[2];
                 Work_Sta=fu_temp[21];
                 Tihuan();
               

                SPI_Configuration();                //W5500 SPI初始化配置(STM32 SPI1)
    W5500_GPIO_Configuration();        //W5500 復(fù)位IO配置        
                W5500_Hardware_Reset();                //硬件復(fù)位W5500
         
          Load_All();     //子網(wǎng)掩碼和MAC等固定信息
               
                //自動獲取IP
                if(Get_IP==0x00)
                {
                        //裝DHCP網(wǎng)絡(luò)參數(shù)
                        Load_Auto();               
                 
                        W5500_Init();                  //初始化W5500寄存器函數(shù)
                        Socket_Init(0);                //指定Socket(0~7)初始化,初始化端口0 端口號
                        
                        W5500_Socket0_Set();//W5500端口0初始化配置,防止斷開連接等讓再次連接
                        SYS=1;
                        OUT=0;
                        IN=0;
                        DHCP();
                        SYS=1;
                        OUT=1;
                        IN=1;//指示已經(jīng)獲取到IP
                }
                //固定IP
                else
                {
                        //裝載固定IP參數(shù)
                        Load_Keep();
                        W5500_Init();                  //初始化W5500寄存器函數(shù)
                        Socket_Init(0);                //指定Socket(0~7)初始化,初始化端口0 端口號
                        
                        W5500_Socket0_Set();//W5500端口0初始化配置,防止斷開連接等讓再次連接
                        
                        SYS=0;
                        OUT=1;
                        IN=0;
                        delay_ms(500);
                        SYS=1;
                        OUT=0;
                        IN=1;
                        delay_ms(500);
                        SYS=1;
                        OUT=1;
                        IN=1;
                }
               
  //設(shè)置本地端口7001
  Update_Port();
        Heart_Bag();

while (1)
        {
               
                        //是否進(jìn)入設(shè)置
                Set_Flag=Key_Scan();
                while(Set_Flag)//設(shè)置完成必須重啟才能
                {
                        SYS=0;
                        OUT=0;
                        IN=0;
                        delay_ms(500);
                        SYS=1;
                        OUT=1;
                        IN=1;
                        delay_ms(500);
                }  
               
                W5500_Socket0_Set();//W5500端口0初始化配置,防止斷開連接等讓再次連接
                        
                W5500_Interrupt_Process();//W5500中斷處理程序,用來讀取數(shù)據(jù)

                if((S0_Data & S_RECEIVE) == S_RECEIVE)//如果Socket0接收到數(shù)據(jù)
                {
                        S0_Data&=~S_RECEIVE;
                        Process_UDP();//W5500接收并發(fā)送接收到的數(shù)據(jù)
                }
               

                //每30s心跳一次
                if( W5500_Send_Delay_Counter%3000==0)
                {
                        
                        SYS=1;//指示燈熄滅,待收到心跳包后服務(wù)器正常會亮起
                        
      Heart_Bag();        
    }
                if( W5500_Send_Delay_Counter%3500==0)//30s每次發(fā)送
                {
                        //傳感器包 0溫度 1濕度,兩次發(fā)送至少間隔5s
     Feel_bag(0);
    }
                else if( W5500_Send_Delay_Counter%4000==0)//35s每次發(fā)送
                {
                        //傳感器包 0溫度 1濕度,兩次發(fā)送至少間隔5s
     Feel_bag(1);
    }
               
                //每半個租期自動獲取一次IP
               
                if(TimerS_Counter==DHCP_Time/2)
                {
                 TimerS_Counter=0;
     DHCP();
    }
               
        

               
               
               
        }
         
        
}
         
         


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:136743 發(fā)表于 2016-8-19 18:53 | 只看該作者
好人啊
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表