📄 app.c
字号:
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 2002, Micrium, Inc., Weston, FL
* All Rights Reserved
*
* TI MSP430
*********************************************************************************************************
*/
#include "includes.h"
/*
*********************************************************************************************************
* CONSTANTS
*********************************************************************************************************
*/
#define TASK_STK_SIZE 64 /* Size of each task's stacks (# of OS_STK entries) */
/*
*********************************************************************************************************
* VARIABLES
*********************************************************************************************************
*/
//OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK Task1Stk[TASK_STK_SIZE];
OS_STK Task2Stk[TASK_STK_SIZE];
OS_EVENT *SEM1;
OS_EVENT *SEM2;
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
*********************************************************************************************************
*/
//void TaskStart(void *data); /* Function prototypes of Startup task */
void Task1(void *data);
void Task2(void *data);
/*$PAGE*/
/*
*********************************************************************************************************
* MAIN
*********************************************************************************************************
*/
void main (void)
{
WDTCTL = WDTPW + WDTTMSEL;
OSInit(); /* Initialize uC/OS-II */
// OSTaskCreate(TaskStart, (void *)0, &TaskStartStk[TASK_STK_SIZE - 1], 0);
OSTaskCreate(Task1,(void *)0, &Task1Stk[TASK_STK_SIZE - 1],3);
OSTaskCreate(Task2,(void *)0, &Task2Stk[TASK_STK_SIZE - 1],4);
SEM1 = OSSemCreate(1);
SEM2 = OSSemCreate(0);
OSStart(); /* Start multitasking */
}
/*
*********************************************************************************************************
* STARTUP TASK
*********************************************************************************************************
*/
void TaskStart (void *pdata)
{
pdata = pdata;
/* Prevent compiler warning */
WDTCTL = WDT_MDLY_32; // Set Watchdog Timer interval to ~30ms
IE1 |= WDTIE; // Enable WDT interrupt
_EINT();
/* Application specific initialization */
while (1) {
/* Task specific code */
OSTimeDly(255);
}
}
void Task1 (void *pdata)
{
static unsigned char Step_1 = 0;
INT8U err;
while(1)
{
OSSemPend(SEM1,0,&err);
Step_1++;
err = OSSemPost(SEM2);
if ( err == OS_NO_ERR ) Step_1++;
else Step_1--;
}
}
void Task2 (void *pdata)
{
static unsigned char Step_2 = 0;
INT8U err;
while(1)
{
OSSemPend(SEM2,0,&err);
Step_2++;
err = OSSemPost(SEM1);
if ( err == OS_NO_ERR ) Step_2++;
else Step_2--;
}
}
/*
// Watchdog Timer interrupt service routine
#pragma vector=WDT_VECTOR
__interrupt void OSTickISR(void)
{
OSIntEnter();
OSTimeTick();
OSIntExit();
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -