📄 app.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 + -