GateWay程序分析_主函数_02整体流程
2013-04-10 17:18
387 查看
int main (void)
{
//系统初始化
SystemInit();
// IOCON使能 GPIO使能
SYS_ConfigAHBCLK(SYS_AHBCLKCTRL_IOCON, ENABLE);
SYS_ConfigAHBCLK(SYS_AHBCLKCTRL_GPIO0, ENABLE);
//看门狗初始化,启动看门狗
WDTInit();
WDTStart();
//如果Flash为空,标志置位,否则标志为假,直接读取IP,端口号,电话号码,节点信息
if(IAP_FlashBlankCheck() == true){
SectorBlankMark = true;
}
else{
SectorBlankMark = false;
IAP_Read_IP();
IAP_Read_Phone();
IAP_Read_Node_Info();
}
//按键初始化,LED初始化,串口初始化,定时器初始化.ZigBee初始化,喂狗
HalKeyInit();
HalLedInit();
uartInit();
Timer32Init(2000);
InitZigBee();
WDTFeed();
//EM310复位,喂狗 (EM310复位需要较长的时间,在复位前后均进行了一次喂狗)
HalResetEM310();
WDTFeed();
//等待EM310就绪,
WaitEM310Ready();
if(InitEM310() == false)
while(1);
//EM310就绪后1.LED眨眼,想手机发送就绪状态.
HalLedBlink(HAL_LED_ALL, 3, 100, 200);
SendMeg(REPORT_READY_NUM,"Ready to connect to server!");
DelayMS(500);
//死循环里有四个分支:
while(1) {
//分支1: 按键事件:----------------处理按键,然后喂狗.
if(KeyState & KEY_MASK){
ProcessKey();
WDTFeed();
}
//分支2:响铃事件---------------------处理短信|电话,然后喂狗.
//if(RING_MARK){
ProMegOrCall();
WDTFeed();
//}
//分支3:GPRS连接-----------------------串口:来自ZigBee|GPRS发到ZigBee
//问题是:这里的GPRS有两个方向?GprsRevData,GprsRevLeftData
if(GPRS_STATE == GPRS_CONNECT_STATE){
Gprs_Buf.dLength = uart0FIFOGets(Gprs_Buf.Buffer,2,MAX_UART0_BUFFER_SIZE);
if (Gprs_Buf.dLength > 0){
HalLedBlink(HAL_LED_2, 1, 50, 100);
ProInfoFromZigBee((uint8 *)Gprs_Buf.Buffer,Gprs_Buf.dLength);
WDTFeed();
}
Gprs_Buf.dLength = GprsRevData(Gprs_Buf.Buffer,2);
if (Gprs_Buf.dLength > 0){
HalLedBlink(HAL_LED_3, 1, 50, 100);
ProInfoToZigBee((uint8 *)Gprs_Buf.Buffer,Gprs_Buf.dLength);
WDTFeed();
}
Gprs_Buf.dLength = GprsRevLeftData(Gprs_Buf.Buffer);
if (Gprs_Buf.dLength > 0){
HalLedBlink(HAL_LED_2|HAL_LED_3, 1, 50, 100);
ProInfoToZigBee((uint8 *)Gprs_Buf.Buffer,Gprs_Buf.dLength);
WDTFeed();
}
}
else if(GPRS_STATE == GPRS_DISCONNECT_STATE)
HalLedBlink(HAL_LED_ALL,1,20,500);
//分支4:定时器中断----------------保存节点信息.
if(Timer32IntMark == true){
Timer32IntMark = false;
IAP_SaveNodeInfo();
}
WDTFeed(); //喂狗----不停的喂狗
}
}
1.系统初始化
2.外设时钟使能:IOCON,GPIO0
3.看门狗初始化,启动看门狗
4.读取ip,电话号码,节点信息
4.按键.LED,串口,定时器.ZigBee初始化
5.喂狗
6.EM310复位,喂狗,等待EM310初始化完成.
7.EM310初始化完成
8死循环:
分支1: 按键事件:----------------处理按键,然后喂狗.
分支2:响铃事件---------------------处理短信|电话,然后喂狗.
分支3:GPRS连接-----------------------串口:来自ZigBee|GPRS发到ZigBee
分支4:定时器中断----------------保存节点信息.
喂狗
究竟有哪些事情要做?
按键---->复位LPC
短信|电话---->配置网关
定时器中断--->保存节点信息
==>重点是: PRS
在GPRS分支里,所有数据放到Gprs_Buf.Buffer里
从串口FIFO里接收到数据
从GprsRevData接收数据
从GprsRevLeftData接收数据.
//问题是:这里的GPRS有两个方向?GprsRevData,GprsRevLeftData什么意思?
![](http://images.cnitblog.com/blog/374803/201304/10171739-5dcd790f9fb544b0b6e16c32274af7a4.jpg)
一直听的一首歌: 岛歌
相关文章推荐
- php程序出现 502 bad gateway 的分析流程
- GateWay程序分析02_IAP_FLASH.H
- GateWay程序分析_主函数_01系统初始化
- Android中Battery电量上报流程分析01-整体架构拆解
- 【转】PostgreSQL查询优化器源码分析--整体流程
- WordPress程序流程分析
- CC2541之SimpleBLEPeripheral程序流程分析 -- 01.启动和事件轮询
- Android OTA升级原理和流程分析(八)---升级程序update_binary的执行过程
- STM32 USB数据接收与数据发送程序流程分析
- 三星6410摄像头测试程序流程分析
- 从源码的角度带你分析Glide整体加载流程以及设计模式
- [Android6.0] 启动流程分析(从开机到第一个程序)
- Android7.0 Vold 进程工作机制分析之整体流程
- Android7.0 Vold 进程工作机制分析之整体流程
- HBase的scan源码分析客户端部分之整体流程(一)
- linux input输入子系统分析《四》:input子系统整体流程全面分析
- 【黑马程序员】Java基础02:Java中的程序流程控制结构
- Linux 启动流程即init程序分析--1
- input子系统整体流程全面分析(触摸屏驱动为例)
- HEVC/H.265整个程序调用流程分析以及函数复杂度分析 .