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

📄 main.c

📁 《ARM与嵌入式系统基础教程》
💻 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 + -