📄 main.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzou ZLG-MCU Development Co.,LTD.
** graduate school
** http://www.zlgmcu.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** Last modified Date: 2004-09-16
** Last Version: V1.00
** Descriptions: The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by: 谢陆伟
** Created date: 2007-07-24
** Version: V1.00
** Descriptions: The original version
**
**--------------------------------------------------------------------------------------------------------
** Created by: 顾满洲
** Created date: 2008-07-28
** Version: V1.01
** Descriptions: 1.移植到SmartARM2400平台,注意修正地址,更改实验环境时要修正SC16C和MinISA基地址、总线
** 的初始化、MinISA的初始化.
** 2.由于实验为初级代码,在线调试的方式观察实验现象.
** 3.适合在外部Flash(DebugInExFlash).
** 4.做GPS实验接收卫星信号时间较长和做GPRS实验时初始化时间较长.
*********************************************************************************************************/
#include "main.h" /* 本文件头文件 */
/*
* 当__GPS_DISPLAY_ENABLE定义为"0"时,做GPRS实验,定义为"1"时做GPS实验
*/
#define __GPS_DISPLAY_ENABLE 0 /* GPRS/GPS串口显示选择 */
char GcGpsData[200] = {0}; /* GPS接收数据显示缓存 */
OS_EVENT *GprsBox = NULL; /* GPRS消息邮箱指针 */
char GprsDisp[] = /* GPRS/串口界面交互信息数组 */
"\r\n*********************** GPRS Test Choose CMD ***********************\r\n\
(Notice: 信息内容及SIM卡号码,皆应先在代码中设定,\r\n\
此实验只从串口接收命令码,并传递给GPRS任务进行处理.)\r\n\r\n\
CMD Functions description\r\n\
------------------------------------------------\r\n\
1. 设置短信息中心, 如: +8613800200500 \r\n\
2. 发送一条短信息 \r\n\
3. 拨打电话\r\n\
------------------------------------------------\r\n";
/*********************************************************************************************************
** 任务参数
*********************************************************************************************************/
#define TaskCreate_ID 15 /* 创建其他任务的任务ID */
#define TaskCreate_PRIO TaskCreate_ID /* 任务的优先级 */
#define TaskCreate_STACK_SIZE 256 /* 定义用户堆栈长度 */
#define TaskRcv_ID 16 /* GPRS/GPS接收数据任务的ID */
#define TaskRcv_PRIO TaskRcv_ID /* 任务的优先级 */
#define TaskRcv_STACK_SIZE 512 /* 定义用户堆栈长度 */
#define TaskGPRS_ID 17 /* GPRS任务的ID */
#define TaskGPRS_PRIO TaskGPRS_ID /* 任务的优先级 */
#define TaskGPRS_STACK_SIZE 512 /* 定义用户堆栈长度 */
#define TaskGPS_ID 18 /* GPS任务的ID */
#define TaskGPS_PRIO TaskGPS_ID /* 任务的优先级 */
#define TaskGPS_STACK_SIZE 256 /* 定义用户堆栈长度 */
#define TaskUART_ID 19 /* 串口交互界面显示任务的ID */
#define TaskUART_PRIO TaskUART_ID /* 任务的优先级 */
#define TaskUART_STACK_SIZE 512 /* 定义用户堆栈长度 */
OS_STK TaskCreate_STACK[TaskCreate_STACK_SIZE]; /* 创建其他任务的任务 堆栈 */
OS_STK TaskRcv_STACK[TaskRcv_STACK_SIZE]; /* GPRS/GPS接收数据任务 堆栈 */
OS_STK TaskGPRS_STACK[TaskGPRS_STACK_SIZE]; /* GPRS任务 堆栈 */
OS_STK TaskGPS_STACK[TaskGPS_STACK_SIZE]; /* GPS任务 堆栈 */
OS_STK TaskUART_STACK[TaskUART_STACK_SIZE]; /* 串口交互界面显示任务 堆栈 */
/*********************************************************************************************************
** Function name: void gprsGpsSysInit(void)
** Descriptions: Gprs/Gps target system initialize.
** Input: none
** Output: none
*********************************************************************************************************/
void gprsGpsSysInit(void)
{
EMCInit(); /* 初始化外部总线 */
MISAInit(); /* 初始化MiniISA总线接口 */
uart0Init(9600); /* 初始化LPC2400串口0 */
InitSC16C(); /* 初始化硬件接口 */
GPSInit(); /* 初始化GPS */
}
/*********************************************************************************************************
** Function name: main
** Descriptions: the main function.
** input parameters: None
** Returned value: None
** Used global variables: None
** Calling modules: None
*********************************************************************************************************/
int main (void)
{
OSInit();
OSTaskCreateExt(TASKCreate, /* 创建启动任务 */
(void *)0,
&TaskCreate_STACK[TaskCreate_STACK_SIZE - 1],
TaskCreate_PRIO,
TaskCreate_ID,
&TaskCreate_STACK[0],
TaskCreate_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSStart();
}
/*********************************************************************************************************
** Function name: TASKCreate
** Descriptions: Create others task 's task
** input parameters: None
** Returned value: None
** Used global variables: None
** Calling modules: TargetInit();gprsGpsSysInit();
*********************************************************************************************************/
void TASKCreate (void *pdata)
{
pdata = pdata;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
TargetInit(); /* 初始化目标环境 */
BUZZER_Set();
OSTimeDly(OS_TICKS_PER_SEC/10);
BUZZER_Clr();
OSTimeDly(OS_TICKS_PER_SEC/10);
BUZZER_Set();
OSTimeDly(OS_TICKS_PER_SEC/10);
BUZZER_Clr();
OSTimeDly(OS_TICKS_PER_SEC/5);
gprsGpsSysInit(); /* GPRS/GPS系统初始化 */
OSTaskCreateExt(TaskGprsGpsRcv, /* 创建各个任务 */
(void *)0,
&TaskRcv_STACK[TaskRcv_STACK_SIZE-1],
TaskRcv_PRIO,
TaskRcv_ID,
&TaskRcv_STACK[0],
TaskRcv_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TaskGPRS,
(void *)0,
&TaskGPRS_STACK[TaskGPRS_STACK_SIZE-1],
TaskGPRS_PRIO,
TaskGPRS_ID,
&TaskGPRS_STACK[0],
TaskGPRS_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TaskGPS,
(void *)0,
&TaskGPS_STACK[TaskGPS_STACK_SIZE-1],
TaskGPS_PRIO,
TaskGPS_ID,
&TaskGPS_STACK[0],
TaskGPS_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSTaskCreateExt(TaskUART,
(void *)0,
&TaskUART_STACK[TaskUART_STACK_SIZE-1],
TaskUART_PRIO,
TaskUART_ID,
&TaskUART_STACK[0],
TaskUART_STACK_SIZE,
(void *)0,
OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
while (1)
{
OSTimeDly(OS_TICKS_PER_SEC * 2);
while(1)
{
#if __GPS_DISPLAY_ENABLE
OS_ENTER_CRITICAL();
sprintf (GcGpsData, /* 调整数据格式,送串口0显示 */
"\r\n****** 当前GPS数据如下: ******\r\n\r\n\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -