📄 main.c
字号:
//*------------------------------------------------------------------------------------------------
//* 文件名 : main.c
//* 功能描述 : 系统入口函数文件
//* 作者 : 焦海波
//* 版本 : 0.1
//* 建立日期、时间 : 2007/05/25 17:00
//* 最近修改日期、时间 :
//* 修改原因 :
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 头文件 -----------------------------------------------
#include "/uCOS-II/ucos_ii.h"
#include "/at91sam7x256/include/AT91SAM7X256.h"
#include "/at91sam7x256/include/lib_AT91SAM7X256.h"
//*-------------------------------------- 常量及宏定义 ---------------------------------------------
OS_STK T_LWIPENTRY_STK[T_LWIPENTRY_STKSIZE];
OS_STK T_RUNTIP_STK[T_RUNTIP_STKSIZE];
//*================================================================================================
//* 函 数 区
//*================================================================================================
void T_RunTip(void *pvArg)
{
extern INT32S s32NeedReset;
INT8S i = 0, __bIsAdd = OS_TRUE, k;
INT32S __s32NeedReset;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
#endif
pvArg = pvArg;
while(OS_TRUE)
{
AT91F_PIO_ClearOutput(AT91C_BASE_PIOB, 1 << (i+19));
OSTimeDlyHMSM(0, 0, 0, 100);
AT91F_PIO_SetOutput(AT91C_BASE_PIOB, 1 << (i+19));
OSTimeDlyHMSM(0, 0, 0, 100);
if(__bIsAdd)
{
i++;
if(i > 2)
{
__bIsAdd = OS_FALSE;
}
}
else
{
i--;
if(i < 1)
{
__bIsAdd = OS_TRUE;
}
}
#if __DEBUG__ == 0
OS_ENTER_CRITICAL()
{
__s32NeedReset = s32NeedReset;
}
OS_EXIT_CRITICAL()
//* 需要芯片复位
if(__s32NeedReset)
{
k = 0;
while(k < 5)
{
OSTimeDlyHMSM(0, 0, 1, 0);
k++;
}
AT91C_BASE_RSTC->RSTC_RCR = 0xA5000000 | AT91C_RSTC_PROCRST;
}
#endif
}
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : __SystemInitialization
//* 功能描述 : 初始化内核调度定时器并加载动态函数库到指定RAM
//* 入口参数 : 无
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
static void __SystemInitialization(void)
{
AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, AT91C_ID_SYS, AT91C_AIC_PRIOR_HIGHEST, AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, OSTickISR);
AT91C_BASE_AIC->AIC_IECR = 0x01 << AT91C_ID_SYS;
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : __SetupHardware
//* 功能描述 : 根据应用目的,对系统硬件进行初始化设置,主要是针对系统外围,AIC等的设置。上电复位期间使系统
//* : 能够正常运行的最基本硬件设置在AT91F_LowLevelInit()函数完成。
//* 入口参数 : 无
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
static void __SetupHardware(void)
{
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << AT91C_ID_PIOB | 1 << AT91C_ID_EMAC);
AT91F_PIO_CfgOutput(AT91C_BASE_PIOB, AT91C_PIO_PB19 | AT91C_PIO_PB20 | AT91C_PIO_PB21 | AT91C_PIO_PB22);
}
//*------------------------------------------------------------------------------------------------
//* 函数名称 : main
//* 功能描述 : 系统入口
//* 入口参数 : 无
//* 出口参数 : 无
//*------------------------------------------------------------------------------------------------
int CMain(void)
{
extern void T_LwIPEntry(void*);
__SetupHardware();
__SystemInitialization();
OSInit();
//* 建立任务
OSTaskCreate(T_LwIPEntry, (void*)NULL, &T_LWIPENTRY_STK[T_LWIPENTRY_STKSIZE-1], T_LWIPENTRY_PRIOR);
OSTaskCreate(T_RunTip, (void*)NULL, &T_RUNTIP_STK[T_RUNTIP_STKSIZE-1], T_RUNTIP_PRIOR);
OSStart();
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -