📄 main.c
字号:
/*
* $Revision: 1.4 $
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "..\CPU\config.h"
#include "..\Main\t6963.h"
#include "..\uCOS270\ucos_ii.h"
#include "..\Timer\Timer.h"
#define ClrWatchDog() (__PIO_SODRB = WDI,__PIO_CODRB = WDI,__PIO_SODRB = WDI)
/* allocate memory for tasks' stacks */
//#ifdef SEMIHOSTED
//#define STACKSIZE (SEMIHOSTED_STACK_NEEDS+64)
//#else
#define STACKSIZE 512
#define N_TASKS 14 /* Number of identical tasks*/
//#endif
unsigned int Stack1[STACKSIZE];
unsigned int Stack2[STACKSIZE];
unsigned int Stack3[STACKSIZE];
unsigned int Stack4[STACKSIZE];
unsigned int Stack5[STACKSIZE];
unsigned int Stack6[STACKSIZE];
unsigned int Stack7[STACKSIZE];
unsigned int Stack8[STACKSIZE];
/* semaphores event control blocks */
OS_EVENT *RandomSem;
unsigned char err;
char Id1 = '1';
char Id2 = '2';
char Id3 = '3';
char Id4 = '4';
char Id5 = '5';
char Id6 = '6';
char Id7 = '7';
char Id8 = '8';
/*
* Task running at the highest priority.
*/
//-------------------------------------------------------------------
void
Task1(void *i)
{
AT91StartTimer();
// OSStatInit();
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
OSStatInit();
AT91LedSet(1);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(256); /* Delay 256 clock tick */
}
}
void
Task2(void *i)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(2);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(128); /* Delay 128 clock tick */
}
}
void Task3(void *p_arg)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(4);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(64); /* Delay 64 clock tick */
}
}
void Task4(void *p_arg)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(8);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(32); /* Delay 32 clock tick */
}
}
void Task5(void *p_arg)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(16);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(16); /* Delay 16 clock tick */
}
}
void Task6(void *p_arg)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(32);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(8); /* Delay 8 clock tick */
}
}
void Task7(void *p_arg)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(64);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(4); /* Delay 4 clock tick */
}
}
void Task8(void *p_arg)
{
for (;;) {
OSSemPend(RandomSem, 0, &err); /* Acquire semaphore to perform random numbers */
AT91LedSet(128);
OSSemPost(RandomSem); /* Release semaphore */
OSTimeDly(2); /* Delay 1 clock tick */
}
}
//--------------------------------------------------------------------
void main(void)
{
AT91LedSet(0);
__disable_interrupt();
AT91InitInterrupt();
AT91InitTimer();
fnLCMInit();
cls();
cursor(0,0);
display_logo();
cls();
dprintf(" 清平调 李白\n");
dprintf("一枝红艳露凝香,云雨巫山枉断肠.\n");
dprintf("借问汉宫谁得似?可怜飞燕倚新妆.\n");
dprintf(" Test Ok!\n");
OSInit();
RandomSem = OSSemCreate(1); /* Random number semaphore */
OSTaskCreate(Task1, (void *)&Id1, (void *)&Stack1[STACKSIZE - 1], 1);
OSTaskCreate(Task2, (void *)&Id2, (void *)&Stack2[STACKSIZE - 1], 2);
OSTaskCreate(Task3, (void *)&Id3, (void *)&Stack3[STACKSIZE - 1], 3);
OSTaskCreate(Task4, (void *)&Id4, (void *)&Stack4[STACKSIZE - 1], 4);
OSTaskCreate(Task5, (void *)&Id5, (void *)&Stack5[STACKSIZE - 1], 5);
OSTaskCreate(Task6, (void *)&Id6, (void *)&Stack6[STACKSIZE - 1], 6);
OSTaskCreate(Task7, (void *)&Id7, (void *)&Stack7[STACKSIZE - 1], 7);
OSTaskCreate(Task8, (void *)&Id8, (void *)&Stack8[STACKSIZE - 1], 8);
__enable_interrupt();
OSStart();
}//main
//------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -