📄 main.c
字号:
/* Stadnalone.c - Example MCore microcontroller application to blink */
/* all 4 LEDS on a MMCEVB2107 board. */
/* Uses on-chip timers to implement a periodic interrupt. */
/* Port to SLK2001 and MMCEVB2107 boards by Tom Thompson, Metrowerks. */
/* Example program written by G. Jack Lipovski for Embedded */
/* Interfacing for MCore Systems, Academic Press, 2000. */
/* Used with permission. Copyright April 2001 by Metrowerks */
/* 29-May-01 */
/* Select the target board here */
#define EVB2107
#undef SLK2001
#include "includes.h" /* Operating System Header */
#include "bsp.h" /* Board Support Header */
#define TASK_STK_SIZE 128 /* Size of each task's stacks (# of WORDs) */
OS_STK TaskStartStk[TASK_STK_SIZE];
OS_STK TaskMonitorStk[TASK_STK_SIZE];
OS_STK TaskPulseStk[TASK_STK_SIZE];
#define MAX_USER_VALUE 0xF
void TaskPulse(void *arg)
{
INT16U width = 0x0;
print2( "TaskPulse started\r\n" );
PWM_Init();
PWM_ConfigChannel( TIM_A_CHANNEL_0, TIM_A_OUTPUT_ACTION_SET, MAX_USER_VALUE );
PWM_ConfigChannel( TIM_A_CHANNEL_1, TIM_A_OUTPUT_ACTION_SET, MAX_USER_VALUE );
PWM_ConfigChannel( TIM_A_CHANNEL_2, TIM_A_OUTPUT_ACTION_SET, MAX_USER_VALUE );
PWM_ConfigChannel( TIM_A_CHANNEL_3, TIM_A_OUTPUT_ACTION_SET, MAX_USER_VALUE );
while(1)
{
print2( "|" );
PWM_SetPulseWidth( TIM_A_CHANNEL_0, width, MAX_USER_VALUE );
PWM_SetPulseWidth( TIM_A_CHANNEL_1, width, MAX_USER_VALUE );
PWM_SetPulseWidth( TIM_A_CHANNEL_2, width, MAX_USER_VALUE );
PWM_SetPulseWidth( TIM_A_CHANNEL_3, width, MAX_USER_VALUE );
width = ( width + 0x1 )%( MAX_USER_VALUE + 0x1 /* to allow 0xF */ );
OSTimeDly( 2000 );
}
}
void TaskMonitor(void *arg)
{
print2( "TaskMonitor started\r\n" );
while(1)
{
print2( "." );
OSTimeDly( 1000 );
}
}
void TaskStart(void *arg)
{
print2( "TaskStart initializes HW for OS\r\n" );
OSStartHardware();
print2( "TaskStart is dead\r\n" );
OSTaskDel(0);
}
void main()
{
BSPInit();
OSInit();
OSTaskCreate( TaskStart , (void*)0, (void *)&TaskStartStk [TASK_STK_SIZE-1], OS_LOWEST_PRIO-10 );
OSTaskCreate( TaskMonitor, (void*)0, (void *)&TaskMonitorStk[TASK_STK_SIZE-1], OS_LOWEST_PRIO-11 );
OSTaskCreate( TaskPulse , (void*)0, (void *)&TaskPulseStk [TASK_STK_SIZE-1], OS_LOWEST_PRIO-12 );
OSStart();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -