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

📄 app.c

📁 针对arm开发板开发的uc/os程序
💻 C
字号:

//===============================================================================================
//===============================================================================================
#define ext

#include "data.h"
#include "board.h"

#define  TASKUS0_STK_SIZE   128
#define	 LEDTask_STK_SIZE  128


#define  TASK_US0_PRIO		2
#define  TASK_LEDTask_PRIO 	4

OS_STK		US0TaskStk[TASKUS0_STK_SIZE];
OS_STK		LEDTaskStk[LEDTask_STK_SIZE];


//-------------------------------------------------------------------------------------------------------
//--VARIABLES
//-------------------------------------------------------------------------------------------------------
INT8U SPEED;
const int led_mask[NB_LEB]= {LED1, LED2, LED3, LED4};
//-------------------------------------------------------------------------------------------------------
//--FUNCTION PROTOTYPES
//-------------------------------------------------------------------------------------------------------

extern void Tmr_TickInit(void);
extern void OSSchedLock(void);
extern void OSSchedUnlock(void);

static	void  US0Task (void *p_arg);
//------------------------------------------------------------------------------------------------------
void Init_all()
{
    AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA ) ;    	// First, enable the clock of the PIO

	SPEED=250;
	pRxdt=RXDT;
    AT91C_USAR_BAUD = 115200;
    BSP_Init();
    SPIK=AT91C_BASE_SPI0;
	
}

//-------------------------------------------------------------------------------------------------------
//main function
//
//-------------------------------------------------------------------------------------------------------
int  main(void)
{//* start
    INT8U  err;
    

    AT91C_BASE_AIC->AIC_IDCR = 0xFFFFFFFF;  /* Disable all interrupts                                  */

    OSInit();                                /* Initialize "uC/OS-II, The Real-Time Kernel"             */

	Init_all();
  
   	err=OSTaskCreateExt(US0Task, 
                    (void *)0, 
                    (OS_STK *)&US0TaskStk[TASKUS0_STK_SIZE-1], 
                    TASK_US0_PRIO, 
                    TASK_US0_PRIO,
                    (OS_STK *)&US0TaskStk[0],
                    TASKUS0_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
                    
                               
#if OS_TASK_NAME_SIZE > 11                    
    OSTaskNameSet(TASK_US0_PRIO, "Start Task", &err);
#endif

#if OS_TASK_NAME_SIZE > 14                    
    OSTaskNameSet(OS_IDLE_PRIO, "uC/OS-II Idle", &err);
#endif

#if (OS_TASK_NAME_SIZE > 14) && (OS_TASK_STAT_EN > 0)                    
    OSTaskNameSet(OS_STAT_PRIO, "uC/OS-II Stat", &err);
#endif
    OSStart();                              /* Start multitasking (i.e. give control to uC/OS-II)      */

}//* end

// Task 2
static void LEDTask(void *p_arg){

	for(;;){
	
		OSTimeDlyHMSM(0, 0, 0, SPEED);
		AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, led_mask[1]) ;
		OSTimeDlyHMSM(0,0,0,SPEED);
		AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, led_mask[1] ) ;
		
		//AT91F_DBGU_Printk("LEDTask\n\r");
	
	}
}


static void US0Task(void *p_arg){
	int err;

	(void)p_arg;

	pri_info();
	
	err=OSTaskCreateExt(LEDTask, 
                    (void *)0, 
                    (OS_STK *)&LEDTaskStk[LEDTask_STK_SIZE-1], 
                    TASK_LEDTask_PRIO, 
                    TASK_LEDTask_PRIO,
                    (OS_STK *)&LEDTaskStk[0],
                    LEDTask_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
	
	for(;;){

		AT91F_PIO_ClearOutput( AT91D_BASE_PIO_LED, led_mask[0]) ;
		
		OSTimeDlyHMSM(0, 0, 0, SPEED);
		//AT91F_DBGU_Printk("LED0\n\r");
		
		AT91F_PIO_SetOutput( AT91D_BASE_PIO_LED, led_mask[0] ) ;
		OSTimeDlyHMSM(0, 0, 0, SPEED);
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -