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

📄 app.c

📁 编译环境是 iar EWARM ,STM32 下的UCOSII
💻 C
📖 第 1 页 / 共 3 页
字号:
/*
*********************************************************************************************************
*                                              EXAMPLE CODE
*
*                          (c) Copyright 2003-2006; Micrium, Inc.; Weston, FL
*
*               All rights reserved.  Protected by international copyright laws.
*               Knowledge of the source code may NOT be used to develop a similar product.
*               Please help us continue to provide the Embedded community with the finest
*               software available.  Your honesty is greatly appreciated.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                            EXAMPLE CODE
*
*                                     ST Microelectronics STM32
*                                              with the
*                                   STM3210E-EVAL Evaluation Board
*
* Filename      : app.c
* Version       : V1.00
* Programmer(s) : BAN
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                             INCLUDE FILES
*********************************************************************************************************
*/

#include <includes.h>


/*
*********************************************************************************************************
*                                            LOCAL DEFINES
*********************************************************************************************************
*/

#define  APP_LINE_0                                        0
#define  APP_LINE_1                                       24
#define  APP_LINE_2                                       48
#define  APP_LINE_3                                       72
#define  APP_LINE_4                                       96
#define  APP_LINE_5                                      120
#define  APP_LINE_6                                      144
#define  APP_LINE_7                                      168
#define  APP_LINE_8                                      192
#define  APP_LINE_9                                      216

#define  APP_COLOR_WHITE                              0xFFFF
#define  APP_COLOR_BLACK                              0x0000
#define  APP_COLOR_BLUE                               0x001F
#define  APP_COLOR_BLUE2                              0x051F
#define  APP_COLOR_RED                                0xF800
#define  APP_COLOR_MAGENTA                            0xF81F
#define  APP_COLOR_GREEN                              0x07E0
#define  APP_COLOR_CYAN                               0x7FFF
#define  APP_COLOR_YELLOW                             0xFFE0

/*
*********************************************************************************************************
*                                       LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/

static  OS_STK         App_TaskStartStk[APP_TASK_START_STK_SIZE];
static  OS_STK         App_TaskUserIFStk[APP_TASK_USER_IF_STK_SIZE];
static  OS_STK         App_TaskKbdStk[APP_TASK_KBD_STK_SIZE];

static  OS_EVENT      *App_UserIFMbox;

static  CPU_CHAR       App_LCDLine0[21];
static  CPU_CHAR       App_LCDLine1[21];
static  CPU_CHAR       App_LCDLine2[21];
static  CPU_CHAR       App_LCDLine3[21];
static  CPU_CHAR       App_LCDLine4[21];
static  CPU_CHAR       App_LCDLine5[21];
static  CPU_CHAR       App_LCDLine6[21];
static  CPU_CHAR       App_LCDLine7[21];
static  CPU_CHAR       App_LCDLine8[21];
static  CPU_CHAR       App_LCDLine9[21];

#if ((APP_OS_PROBE_EN   == DEF_ENABLED) && \
     (APP_PROBE_COM_EN  == DEF_ENABLED) && \
     (PROBE_COM_STAT_EN == DEF_ENABLED))
static  CPU_FP32       App_ProbeComRxPktSpd;
static  CPU_FP32       App_ProbeComTxPktSpd;
static  CPU_FP32       App_ProbeComTxSymSpd;
static  CPU_FP32       App_ProbeComTxSymByteSpd;

static  CPU_INT32U     App_ProbeComRxPktLast;
static  CPU_INT32U     App_ProbeComTxPktLast;
static  CPU_INT32U     App_ProbeComTxSymLast;
static  CPU_INT32U     App_ProbeComTxSymByteLast;

static  CPU_INT32U     App_ProbeComCtrLast;
#endif

#if (APP_OS_PROBE_EN == DEF_ENABLED)
static  CPU_INT32U     App_ProbeCounts;
static  CPU_BOOLEAN    App_ProbeB1;
static  CPU_BOOLEAN    App_ProbeJoystickLeft;
static  CPU_BOOLEAN    App_ProbeJoystickRight;
static  CPU_BOOLEAN    App_ProbeJoystickUp;
static  CPU_BOOLEAN    App_ProbeJoystickDown;
static  CPU_BOOLEAN    App_ProbeJoystickCenter;
#endif


/*
*********************************************************************************************************
*                                      LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/

static  void  App_TaskCreate       (void);
static  void  App_EventCreate      (void);

static  void  App_TaskStart        (void        *p_arg);
static  void  App_TaskUserIF       (void        *p_arg);
static  void  App_TaskKbd          (void        *p_arg);

static  void  App_DispScr_SignOn   (void);
static  void  App_DispScr_TaskNames(void);

#if ((APP_PROBE_COM_EN == DEF_ENABLED) || \
     (APP_OS_PROBE_EN  == DEF_ENABLED))
static  void  App_InitProbe        (void);
#endif

#if (APP_OS_PROBE_EN == DEF_ENABLED)
static  void  App_ProbeCallback    (void);
#endif


static  void  App_FormatDec        (CPU_INT08U  *pstr,
                                    CPU_INT32U   value,
                                    CPU_INT08U   digits);


/*
*********************************************************************************************************
*                                                main()
*
* Description : This is the standard entry point for C code.  It is assumed that your code will call
*               main() once you have performed all necessary initialization.
*
* Argument(s) : none.
*
* Return(s)   : none.
*********************************************************************************************************
*/

int  main (void)
{
    CPU_INT08U  os_err;


    BSP_IntDisAll();                                            /* Disable all ints until we are ready to accept them.  */

    OSInit();                                                   /* Initialize "uC/OS-II, The Real-Time Kernel".         */

    os_err = OSTaskCreateExt((void (*)(void *)) App_TaskStart,  /* Create the start task.                               */
                             (void          * ) 0,
                             (OS_STK        * )&App_TaskStartStk[APP_TASK_START_STK_SIZE - 1],
                             (INT8U           ) APP_TASK_START_PRIO,
                             (INT16U          ) APP_TASK_START_PRIO,
                             (OS_STK        * )&App_TaskStartStk[0],
                             (INT32U          ) APP_TASK_START_STK_SIZE,
                             (void          * )0,
                             (INT16U          )(OS_TASK_OPT_STK_CLR | OS_TASK_OPT_STK_CHK));

#if (OS_TASK_NAME_SIZE >= 11)
    OSTaskNameSet(APP_TASK_START_PRIO, (CPU_INT08U *)"Start Task", &os_err);
#endif

    OSStart();                                                  /* Start multitasking (i.e. give control to uC/OS-II).  */

    return (0);
}


/*
*********************************************************************************************************
*                                          App_TaskStart()
*
* Description : The startup task.  The uC/OS-II ticker should only be initialize once multitasking starts.
*
* Argument(s) : p_arg       Argument passed to 'App_TaskStart()' by 'OSTaskCreate()'.
*
* Return(s)   : none.
*
* Caller(s)   : This is a task.
*
* Note(s)     : none.
*********************************************************************************************************
*/

static  void  App_TaskStart (void *p_arg)
{
    CPU_INT32U  i;
    CPU_INT32U  j;


    (void)p_arg;

    BSP_Init();                                                 /* Initialize BSP functions.                            */
    OS_CPU_SysTickInit();                                       /* Initialize the SysTick.                              */

#if (OS_TASK_STAT_EN > 0)
    OSStatInit();                                               /* Determine CPU capacity.                              */
#endif

#if ((APP_PROBE_COM_EN == DEF_ENABLED) || \
     (APP_OS_PROBE_EN  == DEF_ENABLED))
    App_InitProbe();
#endif

    App_EventCreate();                                          /* Create application events.                           */
    App_TaskCreate();                                           /* Create application tasks.                            */

    while (DEF_TRUE) {                                          /* Task body, always written as an infinite loop.       */
        for (j = 0; j < 4; j++) {
            for (i = 1; i <= 4; i++) {
                BSP_LED_On(i);
                OSTimeDlyHMSM(0, 0, 0, 50);
                BSP_LED_Off(i);
                OSTimeDlyHMSM(0, 0, 0, 50);
            }

            for (i = 3; i >= 2; i--) {
                BSP_LED_On(i);
                OSTimeDlyHMSM(0, 0, 0, 50);
                BSP_LED_Off(i);
                OSTimeDlyHMSM(0, 0, 0, 50);
            }
        }

        for (i = 0; i < 4; i++) {
            BSP_LED_On(0);
            OSTimeDlyHMSM(0, 0, 0, 200);
            BSP_LED_Off(0);
            OSTimeDlyHMSM(0, 0, 0, 200);
        }
    }
}



/*
*********************************************************************************************************
*                                             App_EventCreate()
*
* Description : Create the application events.
*
* Argument(s) : none.
*
* Return(s)   : none.
*
* Caller(s)   : App_TaskStart().
*
* Note(s)     : none.
*********************************************************************************************************
*/

static  void  App_EventCreate (void)
{
#if (OS_EVENT_NAME_SIZE > 12)
    CPU_INT08U  os_err;
#endif


    App_UserIFMbox = OSMboxCreate((void *)0);                   /* Create MBOX for communication between Kbd and UserIF.*/
#if (OS_EVENT_NAME_SIZE > 12)
    OSEventNameSet(App_UserIFMbox, "User IF Mbox", &os_err);
#endif
}


/*
*********************************************************************************************************
*                                            App_TaskCreate()
*
* Description : Create the application tasks.
*
* Argument(s) : none.
*
* Return(s)   : none.
*
* Caller(s)   : App_TaskStart().
*
* Note(s)     : none.
*********************************************************************************************************
*/

static  void  App_TaskCreate (void)
{
    CPU_INT08U  os_err;


    os_err = OSTaskCreateExt((void (*)(void *)) App_TaskUserIF,
                             (void          * ) 0,
                             (OS_STK        * )&App_TaskUserIFStk[APP_TASK_USER_IF_STK_SIZE - 1],
                             (INT8U           ) APP_TASK_USER_IF_PRIO,
                             (INT16U          ) APP_TASK_USER_IF_PRIO,
                             (OS_STK        * )&App_TaskUserIFStk[0],
                             (INT32U          ) APP_TASK_USER_IF_STK_SIZE,
                             (void          * ) 0,
                             (INT16U          )(OS_TASK_OPT_STK_CLR | OS_TASK_OPT_STK_CHK));

#if (OS_TASK_NAME_SIZE >= 9)
    OSTaskNameSet(APP_TASK_USER_IF_PRIO, "User I/F", &os_err);
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -