⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于ARM7的ucos-ii移动收发通信编程ADS开发源码
💻 C
字号:
#define	 MAINMODULE

#include "config.h"

#include "I2CINT.h"
#include "sysmem.h"
#include "fm3164.h"
#include "main.h"
#include "crc16.h"
#include "transform.h"
#include "port.h"

#define	 TaskMonitorStkLengh				    128						            
#define  TaskSouthStkLengh						128
#define  TaskNorthStkLengh						128  	
#define  TaskTD_TwoSecondStkLengh				128

#define  TaskSouthId							4
#define  TaskNorthId							5
#define	 TaskMonitorId						    2						            						               
#define	 TaskTD_TwoSecondId                     10


OS_STK	TaskMonitorStk[TaskMonitorStkLengh];		            
OS_STK	TaskSouthStk[TaskSouthStkLengh]; 
OS_STK	TaskNorthStk[TaskNorthStkLengh];   
OS_STK	TaskTD_TwoSecondStk[TaskTD_TwoSecondStkLengh];   

void 	TaskMonitor(void *pdata);						       
void 	TaskTD_TwoSecond(void *pdata);

OS_EVENT *KeyMbox = NULL; 
#define  IO_KEY1        					(1<<18)		// 开站上报按键	
#define  IO_KEY2        					(1<<16)		// 配置变更上报按键	
#define  IO_KEY3        					(1<<19)		// 巡检上报按键	
#define  IO_KEY4        					(1<<17)	    // 修复上报按键

INT8U localData[256]  = {'\0'};
const INT8U  ParaInitFlag[4]  = {0x00,0x00,0x00,0x01};// 参数区初始化标志

extern INT8U SysGain;

void ResetCpu(void)
{
	OS_ENTER_CRITICAL();		// 关中断		
		
	while(1)
	{
		;						// 等待看门狗复位
	}
}
 
int main(void)
{
	OSInit ();																										
	OSTaskCreate(TaskMonitor,(void *)0, &TaskMonitorStk[TaskMonitorStkLengh - 1], TaskMonitorId);
	OSStart();
	return 0;
}

INT16S CheckSystemInitFlag(void)
{
    INT8U  i = 0;
    INT8U  iic_buff[4];
    INT16S flag = 0;    
    
    ReadFram(0x0000, iic_buff ,4); 
    
    for( i = 0; i < 4; i++ )
    {
    	if( iic_buff[i] != ParaInitFlag[i] )
    	{
    		flag = -1;
    		break;    	
    	}
    }
    return flag;
}

void TaskMonitor(void *pdata)
{ 
    pdata = pdata;
	
	TargetInit();
	I2C_Init(400000);
	InitMsg();							
	InitMem();
    TD_IntAllPar();//初始化参数
    
 	OSTaskCreate (TaskSouth,(void *)0, 	&TaskSouthStk[TaskSouthStkLengh - 1],TaskSouthId);
 	OSTaskCreate (TaskNorth,(void *)0, 	&TaskNorthStk[TaskNorthStkLengh - 1],TaskNorthId);
    OSTaskCreate (TaskTD_TwoSecond,(void *)0, 	&TaskTD_TwoSecondStk[TaskTD_TwoSecondStkLengh - 1],TaskTD_TwoSecondId);
    while (1)
	{
    	OSTimeDly(OS_TICKS_PER_SEC/4);
    	IO0SET = 1 << 13;
    	OSTimeDly(OS_TICKS_PER_SEC/4);
    	IO0CLR = 1 << 13;
	}
}


void TD_QueryState(void)
{
    uint8 state;

    for(state=0 ;state<11 ;state++)
    {
        //下行输出过功率告警计数
        if(DownOutputOverPowerAlarmState[state] == 0x01)
        {
            if (DownOutputOverPowerAlarmCnt[state]++ > 200)
			{
				DownOutputOverPowerAlarmCnt[state] = 100;
			}
            noDownOutputOverPowerAlarmCnt[state] = 0;
        }
        else 
        {
            if (noDownOutputOverPowerAlarmCnt[state]++ > 200)
			{
				noDownOutputOverPowerAlarmCnt[state] = 100;
			}
            DownOutputOverPowerAlarmCnt[state] = 0;
        }
        // 下行输出欠功率告警计数
        if(DownOutputLessPowerAlarmState[state] == 0x01)
        {
            if (DownOutputLessPowerAlarmCnt[state]++ > 200)
			{
				DownOutputLessPowerAlarmCnt[state] = 100;
			}
            noDownOutputLessPowerAlarmCnt[state] = 0;
        }
        else 
        {
            if (noDownOutputLessPowerAlarmCnt[state]++ > 200)
			{
				noDownOutputLessPowerAlarmCnt[state] = 100;
			}
            DownOutputLessPowerAlarmCnt[state] = 0;
        }
        // 下行输出过驻波告警告警计数
        if(DownVSWRAlarmState[state] == 0x01)
        {
            if (DownVSWRAlarmCnt[state]++ > 200)
			{
				DownVSWRAlarmCnt[state] = 100;
			}
            noDownVSWRAlarmCnt[state] = 0;
        }
        else 
        {
            if (noDownVSWRAlarmCnt[state]++ > 200)
			{
				noDownVSWRAlarmCnt[state] = 100;
			}
            DownVSWRAlarmCnt[state] = 0;
        }
    }
    // TD-SCDMA失步告警计数
    if(AsynchronismAlarmState == 0x01)
    {
        if (AsynchronismAlarmCnt++ > 200)
        {
		    AsynchronismAlarmCnt = 100;
		}
        noAsynchronismAlarmCnt = 0;
    }
    else 
    {
        if (noAsynchronismAlarmCnt++ > 200)
	    {
			noAsynchronismAlarmCnt = 100;
		}
        AsynchronismAlarmCnt = 0;
    }
    //告警计数记够后
    for(state=0 ; state<11 ;state++)
    {
        //下行输出过功率告警产生
        if((DownOutputOverPowerAlarmCnt[state] > 36) && (Querydata2G[state].DownOutputOverPowerAlarmEn == 0x01))
        {
            Syncdata2G[state].Dev_DownOutputOverPowerAlarmState = 0x01;

        }
        else if(noDownOutputOverPowerAlarmCnt[state] > 81)
        {
            Syncdata2G[state].Dev_DownOutputOverPowerAlarmState = 0x00;

        }
        //下行输出欠功率告警产生
        if((DownOutputLessPowerAlarmCnt[state] > 36) && (Querydata2G[state].DownOutputLessPowerAlarmEn == 0x01))
        {
            Syncdata2G[state].Dev_DownOutputLessPowerAlarmState = 0x01;

        }
        else if(noDownOutputLessPowerAlarmCnt[state] > 81)
        {
            Syncdata2G[state].Dev_DownOutputLessPowerAlarmState = 0x00;

        }
        //下行输出过驻波告警产生
        if((DownVSWRAlarmCnt[state] > 36) && (Querydata2G[state].DownVSWRAlarmEn == 0x01))
        {
            Syncdata2G[state].Dev_DownVSWRAlarmState = 0x01;

        }
        else if(noDownVSWRAlarmCnt[state] > 81)
        {
            Syncdata2G[state].Dev_DownVSWRAlarmState = 0x00;

        }
    }
    //TD模块的告警状态
  
    //下行输出过功率告警产生
    if((DownOutputOverPowerAlarmCnt[6] > 36) && (Querydata3G.DownOutputOverPowerAlarmEn == 0x01))
    {
        Syncdata3G.Dev_DownOutputOverPowerAlarmState = 0x01;
    }
    else if(noDownOutputOverPowerAlarmCnt[6] > 81)
    {
        Syncdata3G.Dev_DownOutputOverPowerAlarmState = 0x00;
    }
    //下行输出欠功率告警产生
    if((DownOutputLessPowerAlarmCnt[6] > 36) && (Querydata3G.DownOutputLessPowerAlarmEn == 0x01))
    {
        Syncdata3G.Dev_DownOutputLessPowerAlarmState = 0x01;
    }
    else if(noDownOutputLessPowerAlarmCnt[6] > 81)
    {
        Syncdata3G.Dev_DownOutputLessPowerAlarmState = 0x00;
    }
    //下行输出过驻波告警产生
    if((DownVSWRAlarmCnt[6] > 36) && (Querydata3G.DownVSWRAlarmEn == 0x01))
    {
        Syncdata3G.Dev_DownVSWRAlarmState = 0x01;
    }
    else if(noDownVSWRAlarmCnt[6] > 81)
    {
        Syncdata3G.Dev_DownVSWRAlarmState = 0x00;
    }

    if((AsynchronismAlarmCnt> 36) && (Querydata3G.AsynchronismAlarmEn ==0x01))
    {
        Syncdata3G.Dev_AsynchronismAlarmState = 0x01;
    }
    else if(AsynchronismAlarmCnt> 81)
    {
        Syncdata3G.Dev_AsynchronismAlarmState = 0x00;
    }
}
void TaskTD_TwoSecond(void *pdata)
{
  	pdata = pdata;
  	
  	while(1)
 	{
 		TD_QueryState();
 		OSTimeDly(200);
 	}	
}
void TD_IntAllPar(void)
{
    //2G初始化设备信息
    ReadFram(1, (INT8U *)&Querydata2G[2].ModuleType ,13);//初始化GSM参数
    ReadFram(14, (INT8U *)&Querydata2G[3].ModuleType ,13);//初始化DCS参数
    ReadFram(27, (INT8U *)&Querydata2G[4].ModuleType ,13);//初始化CDMA800参数
    ReadFram(40, (INT8U *)&Querydata2G[5].ModuleType ,13);//初始化CDMA200参数
    ReadFram(53, (INT8U *)&Querydata2G[7].ModuleType ,13);//初始化WCDMA参数
    //2G初始化同步数据
    ReadFram(66, (INT8U *)&Syncdata2G[2].RFSignalSwitch ,6);//初始化GSM参数
    ReadFram(72, (INT8U *)&Syncdata2G[3].RFSignalSwitch ,6);//初始化DCS参数
    ReadFram(78, (INT8U *)&Syncdata2G[4].RFSignalSwitch ,6);//初始化CDMA800参数
    ReadFram(84, (INT8U *)&Syncdata2G[5].RFSignalSwitch ,6);//初始化CDMA200参数
    ReadFram(90, (INT8U *)&Syncdata2G[7].RFSignalSwitch ,6);//初始化WCDMA参数
    //3G初始化设备信息
    ReadFram(96, (INT8U *)&Querydata3G.ModuleType ,15);
    //3G初始化同步数据
    ReadFram(111, (INT8U *)&Syncdata3G.RFSignalSwitch ,7);
    //同步的制式的状态初始化 
    ReadFram(0x119,(INT8U *)(&SysGain),1);  
}
void TD_WriteAllPar(void)
{
    //2G初始化设备信息
    WriteFram(1, (INT8U *)&Querydata2G[2].ModuleType ,13);//初始化GSM参数
    WriteFram(14, (INT8U *)&Querydata2G[3].ModuleType ,13);//初始化DCS参数
    WriteFram(27, (INT8U *)&Querydata2G[4].ModuleType ,13);//初始化CDMA800参数
    WriteFram(40, (INT8U *)&Querydata2G[5].ModuleType ,13);//初始化CDMA200参数
    WriteFram(53, (INT8U *)&Querydata2G[7].ModuleType ,13);//初始化WCDMA参数
    //2G初始化同步数据
    WriteFram(66, (INT8U *)&Syncdata2G[2].RFSignalSwitch ,6);//初始化GSM参数
    WriteFram(72, (INT8U *)&Syncdata2G[3].RFSignalSwitch ,6);//初始化DCS参数
    WriteFram(78, (INT8U *)&Syncdata2G[4].RFSignalSwitch ,6);//初始化CDMA800参数
    WriteFram(84, (INT8U *)&Syncdata2G[5].RFSignalSwitch ,6);//初始化CDMA200参数
    WriteFram(90, (INT8U *)&Syncdata2G[7].RFSignalSwitch ,6);//初始化WCDMA参数
    //3G初始化设备信息
    WriteFram(96, (INT8U *)&Querydata3G.ModuleType ,15);
    //3G初始化同步数据
    WriteFram(111, (INT8U *)&Syncdata3G.RFSignalSwitch ,7);
    //同步的制式的状态初始化
    WriteFram(0x119,(INT8U *)(&SysGain),1);
    
}
/*********************************************************************************************************
**                            End Of File
**********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -