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

📄 menu.c

📁 万利ARM9的STR912开发板配套资料和源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : menu.c
* Author             : MCD Application Team
* Date First Issued  : 03/31/2006 :  Beta Version V0.1
* Description        : This file includes the menu navigation driver of STR75x-EVAL.
********************************************************************************
* History:
* 03/31/2006 :  Beta Version V0.1
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* Private typedef -----------------------------------------------------------*/
  typedef void (* tMenuFunc)(void);
  typedef struct sMenuItem * tMenuItem;
  typedef struct sMenu * tMenu;

/* Private define ------------------------------------------------------------*/

  /* "SEL" key help master LCD graphic */
  u8 SELHelp[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x40, 0x60, 0x70, 0xF8, 0xF8, 0x70, 0x60, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0,
  0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x20, 0x20, 0x00, 0x00, 0xE3,
  0x23, 0x20, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
  0x80, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x01, 0x01, 0x01, 0x00,
  0x00, 0x00, 0x08, 0x09, 0x09, 0x06, 0x00, 0x00, 0xCF, 0xC9, 0x09, 0x08, 0x00,
  0x00, 0x0F, 0x08, 0x08, 0x08, 0x00, 0x00, 0x01, 0x01, 0x01, 0x0F, 0x07, 0x03,
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x02, 0x06, 0x0E, 0x1F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

  /* "UP" and "DOWN" keys help master LCD graphic */
  u8 UPDOWNHelp[] = {
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x40, 0x60, 0x70, 0xF8, 0xF8, 0x70, 0x60, 0x40, 0x00, 0x00, 0x78, 0x80, 0x80,
  0x78, 0x00, 0xF8, 0x28, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x20, 0x20, 0x00, 0x00, 0xE3,
  0x23, 0x20, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x08, 0x09, 0x09, 0x06, 0x00, 0x00, 0xCF, 0xC9, 0x09, 0x08, 0x00,
  0x00, 0x0F, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x11, 0x11, 0x0E, 0x00, 0x0E, 0x11, 0x11,
  0x0E, 0x00, 0x0F, 0x10, 0x0C, 0x10, 0x0F, 0x00, 0x1F, 0x06, 0x0C, 0x1F, 0x00,
  0x00, 0x02, 0x06, 0x0E, 0x1F, 0x1F, 0x0E, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

  /* "LEFT" and "RIGHT" keys help master LCD graphic */
  u8 LEFTRIGHTHelp[] = {
  0x00, 0x00, 0x00, 0xF8, 0x80, 0x80, 0x00, 0xF8, 0xA8, 0x88, 0x00, 0xF8, 0x28,
  0x08, 0x00, 0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0,
  0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x20, 0x20, 0x00, 0x00, 0xE0,
  0x20, 0x20, 0x20, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
  0x80, 0xF0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x01, 0x01, 0x01, 0x00,
  0x00, 0x00, 0x08, 0x09, 0x09, 0x06, 0x00, 0x00, 0x0F, 0x09, 0x09, 0x08, 0x00,
  0x00, 0x0F, 0x08, 0x08, 0x88, 0x80, 0x80, 0x01, 0x01, 0x81, 0x0F, 0x07, 0x83,
  0x81, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  0x0F, 0x02, 0x06, 0x09, 0x00, 0x0F, 0x00, 0x07, 0x08, 0x0A, 0x06, 0x00, 0x0F,
  0x02, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00};

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/

  extern vu16 PlayIntroDelay;
  u8 MenuItemIndex = 0, nMenuLevel = 0;
  u8 ItemNumb[MAX_MENU_LEVELS];
  u8* CurrentMenu;

  tMenuItem psMenuItem, psCurrentMenuItem;
  tMenu psPrevMenu[MAX_MENU_LEVELS];
  tMenu psCurrentMenu;

  struct sMenuItem
  {
    u8* pszTitle;
    tMenuFunc pfMenuFunc;
    tMenuFunc pfUpDownMenuFunc;
    tMenu psSubMenu ;
  };

  struct sMenu
  {
    u8* pszTitle;
    tMenuItem psItems;
    u8 nItems;
  };


/*------------------------------ Menu level 4 -------------------------------*/
struct sMenuItem TimeShowMenuItems[] = {"     :  :      ", IdleFunc, IdleFunc};
struct sMenu TimeShowMenu = {"    Time Show    ", TimeShowMenuItems, countof(TimeShowMenuItems)};

struct sMenuItem TimeAdjustMenuItems[] = {"    Time Adjust  ", IdleFunc, IdleFunc};
struct sMenu TimeAdjustMenu = {"    Time Adjust  ", TimeAdjustMenuItems, countof(TimeAdjustMenuItems)};

struct sMenuItem DateShowMenuItems[] = {"               ", IdleFunc, IdleFunc};
struct sMenu DateShowMenu = {"    Date Show    ", DateShowMenuItems, countof(DateShowMenuItems)};

struct sMenuItem DateAdjustMenuItems[] = {"    Date Adjust  ", IdleFunc, IdleFunc};
struct sMenu DateAdjustMenu = {"    Date Adjust  ", DateAdjustMenuItems, countof(DateAdjustMenuItems)};

struct sMenuItem AlarmShowMenuItems[] = {"     :  :        ", IdleFunc, IdleFunc};
struct sMenu AlarmShowMenu = {"    Alarm Show   ", AlarmShowMenuItems, countof(AlarmShowMenuItems)};

struct sMenuItem AlarmAdjustMenuItems[] = {"   Alarm Adjust  ", IdleFunc, IdleFunc};
struct sMenu AlarmAdjustMenu = {"   Alarm Adjust  ", AlarmAdjustMenuItems, countof(AlarmAdjustMenuItems)};

/*------------------------------ Menu level 3 -------------------------------*/
struct sMenuItem SettingDateMenuItems[] = { {"     Adjust      ", Date_Adjust, IdleFunc, &DateAdjustMenu},
                                            {"      Show       ", Date_Show, IdleFunc, &DateShowMenu}};
struct sMenu DateMenu = {"      Date       ", SettingDateMenuItems, countof(SettingDateMenuItems)};

struct sMenuItem SettingTimeMenuItems[] = { {"     Adjust      ", Time_Adjust, IdleFunc, &TimeAdjustMenu},
                                            {"      Show       ", Time_Show, IdleFunc, &TimeShowMenu}};
struct sMenu TimeMenu = {"      Time       ", SettingTimeMenuItems, countof(SettingTimeMenuItems)};

struct sMenuItem SettingAlarmMenuItems[] = { {"     Adjust      ", Alarm_Adjust, IdleFunc, &AlarmAdjustMenu},
                                             {"      Show       ", Alarm_Show, IdleFunc, &AlarmShowMenu}};
struct sMenu AlarmMenu = {"      Alarm      ", SettingAlarmMenuItems, countof(SettingAlarmMenuItems)};

struct sMenuItem PromoWaveMenuItems[] = { {"  Play/Replay    ", WavePlayer_Start, IdleFunc},
                                          {"      Stop       ", WavePlayer_Stop, IdleFunc}};
struct sMenu PromoWaveMenu = {"     OSIRIS    ", PromoWaveMenuItems, countof(PromoWaveMenuItems)};


/*------------------------------ Menu level 2 -------------------------------*/
struct sMenuItem CalendarMenuItems[] = { {"      Time       ", IdleFunc, IdleFunc, &TimeMenu},
                                         {"      Date       ", IdleFunc, IdleFunc, &DateMenu},
                                         {"      Alarm      ", IdleFunc, IdleFunc, &AlarmMenu}};
struct sMenu CalendarMenu = {"     Calendar    ", CalendarMenuItems, countof(CalendarMenuItems)};

struct sMenuItem WavePlayerMenuItems[] = {{"     OSIRIS    ", IdleFunc, IdleFunc, &PromoWaveMenu}};
struct sMenu WavePlayerMenu = {"   Wave Player   ",WavePlayerMenuItems, countof(WavePlayerMenuItems)};


struct sMenuItem CANLoopBackItems[] = {{"      Start      ", CANLoopBack_Start, IdleFunc}};
struct sMenu CANLoopBackMenu = {"  CAN Loop Back  ", CANLoopBackItems, countof(CANLoopBackItems)};

struct sMenuItem USBMouseDemoItems[] = {{"      Start      ", JoyStickHID_Start, IdleFunc}};
struct sMenu USBMouseDemoMenu = {" USB Mouse Demo  ", USBMouseDemoItems, countof(USBMouseDemoItems)};

/*------------------------------ Menu level 1 -------------------------------*/
struct sMenuItem MainMenuItems[] = {
  {"       Help      ", HelpMenu, IdleFunc},
  {"     Calendar    ", IdleFunc, IdleFunc, &CalendarMenu},
  {"   Wave Player   ", IdleFunc, IdleFunc, &WavePlayerMenu},
  {"  CAN Loop Back  ", IdleFunc, IdleFunc, &CANLoopBackMenu},
  {" USB Mouse Demo  ", IdleFunc, IdleFunc, &USBMouseDemoMenu}};
struct sMenu MainMenu = {"    Main menu    ", MainMenuItems, countof(MainMenuItems)};

/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : Menu_Init
* Description    : Initializes the navigation menu.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void Menu_Init(void)
{
  psCurrentMenu = &MainMenu;
  psPrevMenu[nMenuLevel] = psCurrentMenu;
  psMenuItem = MainMenuItems;
}

/*******************************************************************************
* Function Name  : DisplayMenu
* Description    : Displays the current menu.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void DisplayMenu(void)
{
  LCD_DisplayString(Line1, psCurrentMenu->pszTitle, WhiteText);
  LCD_DisplayString(Line2, psMenuItem->pszTitle, BlackText);
  CurrentMenu = psCurrentMenu->pszTitle;
}

/*******************************************************************************
* Function Name  : SelFunc
* Description    : This function is executed when "SEL" push-buttton is pressed.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void SelFunc(void)
{
  psCurrentMenuItem = psMenuItem;

  if(psMenuItem->psSubMenu != NULL)
  {
   /* Update the current Item by the submenu */

⌨️ 快捷键说明

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