//======================================================================
//文件名称：main.c
//功能概要：应用工程主函数及部分子函数
//版权所有：苏大arm技术中心(sumcu.suda.edu.cn)
//版本更新：2017.08:1.0, 2019.1:A.10
//功能描述：说明见工程文件夹下的Doc文件夹内Readme.txt文件
//======================================================================
#define GLOBLE_VAR
#include "includes.h"      //包含总头文件

//----------------------------------------------------------------------
//----------------------------------------------------------------------
//【根据实际需要增删】声明使用到的内部函数
//main.c使用的内部函数声明处

//----------------------------------------------------------------------
//主函数，一般情况下可以认为程序从此开始运行（实际上有启动过程见书稿）
int main(void)
 {
	//（1）启动部分（开头）======
	//（1.1）声明main函数使用的局部变量
	uint_64 mMainLoopCount;  //主循环使用的记录主循环次数变量
    uint_64 mTime;           //主循环使用的临时时间变量

	//（1.3）【不变】BIOS中API接口表首地址、用户中断处理程序名初始化
    bios_fun_point=svc1_init();  //获取BIOS中API接口表首地址
    Int_Handler_init();    //用户中断处理程序名初始化
	//（1.2）【不变】关总中断
	DISABLE_INTERRUPTS;

    mMainLoopCount = 0;     //主循环使用的记录主循环次数变量
    gcRFHdaddr = 0xFF;
    gcRFNodeaddr = 0x01;

    //（1.4）用户外设模块初始化
    light_init(LIGHT_RED,LIGHT_OFF);//初始化红灯
    uart_init(UART_USER2,9600);  //初始化串口2
	pcnode_init(UART_USER1,115200);   //初始化PCNode串口（UARTA）
	rfnode_init(gcRFHdaddr,gcRFNodeaddr);

	//（1.5）使能模块中断
    uart_enable_re_int(UART_USER2);
	MKW01Drv_IRQ_DIO1_Enable();	  //开启DIO1中断

	//（1.6）【不变】开总中断
    ENABLE_INTERRUPTS;

    //（1）启动部分（结尾）======

    //（2）主循环部分（开头）======
    for(;;)
    {
		//判断RF标志位
		if(strcmp(gcRFFlag,"Send\0") == 0)
		{
			rfnode_sendN(gcRFSendLen,gcRFSendBuf);
			gcRFFlag[0] = '\0';
		}
		else if(strcmp(gcRFFlag,"Receive\0") == 0)
		{
			pcnode_sendN(gcRFRecvLen,gcRFRecvBuf);
			gcRFFlag[0] = '\0';
		}

		light_change(LIGHT_RED);
		Delay_ms(500);
    }
    //（2）主循环部分（结尾）======
}

//======以下为主函数调用的子函数======


/*
 知识要素：
 1.main.c是一个具体的实例，执行相关程序流程不会涉及任何环境，芯片问题。
 该文件所有代码均不会涉及具体的硬件和环境，它通过调用相关构件来实现与硬件
 系统的交互。
 2.本文件共有两类代码，一类为【根据实际需要增删】，此类代码根据具体
 项目需求进行更改；另一类为【不变】，此类代码与具体项目无关，是通用的，
 无需根据具体项目进行更改。
 3.本文件对宏GLOBLE_VAR进行了定义， 所以在包含"includes.h"头文件时
 会定义全局变量，在其他文件中包含"includes.h"头文件时，仅声明该头文件中
 的全局变量。
 */
