⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 摩托罗拉MMC2107在ucosII的移植代码
💻 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 + -