📄 main.c
字号:
/*
* file: main.c
*
* PowerPC Main application source file
* for UCOS-II
*
* Author: Ernie Price
* eprice@bitwise.net
*
*/
#include "includes.h"
// function prototypes
void main (void);
static void Task_Four (void *data);
static void Task_Two (void *data);
static void Task_Three(void *data);
static void Task_One (void *data);
// defines
#define TASK_STK_SIZE 1024u
#define TASK_ONE_DLY 30u // in ticks
#define TASK_TWO_DLY 40u
#define TASK_THREE_DLY 50u
#define TASK_FOUR_DLY 60u
#define TASK_ONE_LED 1u // bit mask
#define TASK_TWO_LED 2u
#define TASK_THREE_LED 4u
#define TASK_FOUR_LED 8u
// priorities
enum t_prio { TASK_ONE_PRIO = 2, TASK_TWO_PRIO, TASK_THREE_PRIO, TASK_FOUR_PRIO };
// module scope variables
static INT32S ctrTask_One;
static INT32S ctrTask_Two;
static INT32S ctrTask_Three;
static INT32S ctrTask_Four;
static OS_STK Task_FourStk [TASK_STK_SIZE];
static OS_STK Task_ThreeStk [TASK_STK_SIZE];
static OS_STK Task_TwoStk [TASK_STK_SIZE];
static OS_STK Task_OneStk [TASK_STK_SIZE];
static INT8U Task_FourData;
static INT8U Task_ThreeData;
static INT8U Task_TwoData;
static INT8U Task_OneData;
/*
\breif main ()
*/
void main (void)
{
INT32U idx;
for (idx = 0u; idx < TASK_STK_SIZE; idx++) // fill stacks with known pattern
{
Task_ThreeStk[idx] = 0xE0E1E2E3;
Task_TwoStk [idx] = 0xE0E1E2E3;
Task_OneStk [idx] = 0xE0E1E2E3;
Task_FourStk [idx] = 0xE0E1E2E3;
}
epic_InitEPIC(); // intialize the interrupt controller
i2c_Init(); // intialize the I2C unit
OSInit (); // intialize the OS
OSTaskCreate ( Task_One,
(void *)&Task_OneData,
(void *)&Task_OneStk[TASK_STK_SIZE - 1],
TASK_ONE_PRIO);
OSTaskCreate ( Task_Two,
(void *)&Task_TwoData,
(void *)&Task_TwoStk[TASK_STK_SIZE - 1],
TASK_TWO_PRIO);
OSTaskCreate ( Task_Three,
(void *)&Task_ThreeData,
(void *)&Task_ThreeStk[TASK_STK_SIZE - 1],
TASK_THREE_PRIO);
OSTaskCreate ( Task_Four,
(void *)&Task_FourData,
(void *)&Task_FourStk[TASK_STK_SIZE - 1],
TASK_FOUR_PRIO);
OSStart(); // never returns...
}
/*
\breif demo task one
*/
static void Task_One (void * data)
{
URP(data);
decr_Start (OS_TICKS_PER_SEC); // start the OS ticker
OSStatInit ();
for(;;)
{
OSTimeDly (TASK_ONE_DLY);
LedManipulate(TASK_ONE_LED);
ctrTask_One++;
}
}
/*
\breif demo task two
*/
static void Task_Two (void *data)
{
URP(data);
for(;;)
{
OSTimeDly (TASK_TWO_DLY);
LedManipulate(TASK_TWO_LED);
ctrTask_Two++;
}
}
/*
\breif demo task three
*/
static void Task_Three (void *data)
{
URP(data);
for(;;)
{
OSTimeDly (TASK_THREE_DLY);
LedManipulate(TASK_THREE_LED);
if (!ctrTask_Three++)
{
i2c_Enable();
}
i2c_SendChar(0xa8);
}
}
/*
\breif demo task four
*/
static void Task_Four (void *data)
{
URP(data);
ctrTask_Four = 0;
for(;;)
{
ctrTask_Four++;
OSTimeDly (TASK_FOUR_DLY);
LedManipulate(TASK_FOUR_LED);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -