📄 main.c
字号:
#include <stdio.h>
#include "includes.h"
#define STACK_SIZE 512
#define N_TASKS 3
OS_STK TaskStk[N_TASKS][STACK_SIZE];
void TestA( void* pdata );
void TestB( void* pdata );
void TestC( void* pdata );
void OSTickISR();
int main()
{
/*
OSCpuInit();
fprintf( stderr, "OSCpuInit OK ...\n" );
*/
OSInit();
fprintf( stderr, "OSInit OK ...\n" );
puts( "wooo!" );
fprintf( stderr, "Test Ptr: 0x%08x\n", TestA );
fprintf( stderr, "main Ptr: 0x%08x\n", main );
fprintf( stderr, "OSTaskCreate Ptr: 0x%08x\n", OSTaskCreate );
fprintf( stderr, "OSTaskStkInit Ptr: 0x%08x\n", OSTaskStkInit );
fprintf( stderr, "OSStart Ptr: 0x%08x\n", OSStart );
fprintf( stderr, "OSTickISR Ptr: 0x%08x\n", OSTickISR );
fprintf( stderr, "OSStartHighRdy Ptr: 0x%08x\n", OSStartHighRdy );
fprintf( stderr, "OS_Sched Ptr: 0x%08x\n", OS_Sched );
fprintf( stderr, "&TaskStk[0][STACK_SIZE] Ptr: 0x%08x\n", &TaskStk[0][STACK_SIZE] );
OSTaskCreate( TestA, (void*)0, &TaskStk[0][STACK_SIZE-1], 2 ); /* prio = 2 */
OSTaskCreate( TestB, (void*)0, &TaskStk[1][STACK_SIZE-1], 3 ); /* prio = 3 */
OSTaskCreate( TestC, (void*)0, &TaskStk[2][STACK_SIZE-1], 3 ); /* prio = 3 */
OSStart();
/* NEVER EXECUTED */
}
void delay( int time )
{
int i, j, k;
for ( k = 0; k < time; ++k )
for ( i = 0; i < 10000; ++i )
for ( j = 0; j < 10000; ++j )
;
}
int
write(int file, char *ptr, int len);
void TestA( void* pdata )
{
char str[] = "A0.";
char *p = &str[1];
for (;;)
{
(*p)++;
if ( *p > '9' )
{
OSTaskSuspend( OS_PRIO_SELF );
*p = '0';
}
write( 0, str, 3 );
delay(1);
}
}
void TestB( void* pdata )
{
char str[] = "B0.";
char *p = &str[1];
for (;;)
{
(*p)++;
if ( *p > '9' )
{
OSTaskResume( 2 );
*p = '0';
}
write( 0, str, 3 );
delay(1);
}
}
void TestC( void* pdata )
{
char str[] = "C0.";
char *p = &str[1];
for (;;)
{
(*p)++;
if ( *p > '9' )
{
OSTaskResume( 2 );
*p = '0';
}
write( 0, str, 3 );
delay(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -