📄 menu.c
字号:
u16 IconRect[8][2] ={{34, 286}, {34, 201}, {34, 116},
{99, 286}, {99, 201}, {99, 116},
{164, 286}, {164, 201}};
/* Disable the JoyStick interrupts */
IntExtOnOffConfig(DISABLE);
/* Initializes the Menu state machine */
Menu_Init();
MenuItemIndex = 0;
/* Clear*/
LCD_Clear(White);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_DisplayStringLine(Line0, psMenuItem->pszTitle);
/* Set the Back Color */
LCD_SetBackColor(White);
/* Set the Text Color */
LCD_SetTextColor(Blue);
/* Displays Icons */
DisplayIcons();
/* Disable LCD Window mode */
LCD_WindowModeDisable();
LCD_DrawRect(IconRect[0][0], IconRect[0][1], 65, 85);
/* Endless loop */
while(1)
{
/* Check which key is pressed */
MyKey = ReadKey();
/* If "UP" pushbutton is pressed */
if(MyKey == UP)
{
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
if(i <= 2)
{
i += 6;
if(i == 8)
{
i = 7;
}
}
else
{
i -= 3;
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
/* Test on the MenuItemIndex value before incrementing it */
if(MenuItemIndex <= 2)
{
MenuItemIndex += 6;
if(MenuItemIndex == 8)
{
MenuItemIndex = 7;
}
}
else
{
MenuItemIndex -= 3;
}
/* Get the current menu */
psMenuItem = &(psCurrentMenu->psItems[MenuItemIndex]);
LCD_DisplayStringLine(Line0, psMenuItem->pszTitle);
ItemNumb[nMenuLevel] = MenuItemIndex;
}
/* If "DOWN" pushbutton is pressed */
if(MyKey == DOWN)
{
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
if(i >= 6)
{
i -= 6;
}
else
{
i += 3;
if(i == 8)
{
i = 7;
}
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
/* Test on the MenuItemIndex value before incrementing it */
if(MenuItemIndex >= 6)
{
MenuItemIndex -= 6;
}
else
{
MenuItemIndex += 3;
if(MenuItemIndex == 8)
{
MenuItemIndex = 7;
}
}
/* Get the current menu */
psMenuItem = &(psCurrentMenu->psItems[MenuItemIndex]);
LCD_DisplayStringLine(Line0, psMenuItem->pszTitle);
ItemNumb[nMenuLevel] = MenuItemIndex;
}
/* If "LEFT" pushbutton is pressed */
if(MyKey == LEFT)
{
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
if(i == 0)
{
i = 7;
}
else
{
i--;
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
if(MenuItemIndex > 0)
{
MenuItemIndex--;
}
else
{
MenuItemIndex = psCurrentMenu->nItems - 1;
}
psMenuItem = &psCurrentMenu->psItems[MenuItemIndex];
LCD_DisplayStringLine(Line0, psMenuItem->pszTitle);
ItemNumb[nMenuLevel] = MenuItemIndex;
}
/* If "RIGHT" pushbutton is pressed */
if(MyKey == RIGHT)
{
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
if(i == 7)
{
i = 0x00;
}
else
{
i++;
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 65, 85);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
/* Test on the MenuItemIndex value before incrementing it */
if(MenuItemIndex >= ((psCurrentMenu->nItems) - 1))
{
MenuItemIndex = 0;
}
else
{
MenuItemIndex++;
}
/* Get the current menu */
psMenuItem = &(psCurrentMenu->psItems[MenuItemIndex]);
LCD_DisplayStringLine(Line0, psMenuItem->pszTitle);
ItemNumb[nMenuLevel] = MenuItemIndex;
}
/* If "SEL" pushbutton is pressed */
if(MyKey == SEL)
{
SelFunc();
IntExtOnOffConfig(ENABLE);
return;
}
}
}
/*******************************************************************************
* Function Name : FunnyCircles
* Description :
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void FunnyCircles(void)
{
u32 radius = 110, color = Red;
u32 pressedkey = 0;
/* Disable the JoyStick Interrupts */
IntExtOnOffConfig(DISABLE);
while(ReadKey() != NOKEY)
{
}
/* Set the Back Color */
LCD_SetBackColor(White);
/* Set the Text Color */
LCD_SetTextColor(Red);
LCD_Clear(Black);
/* Draw a rectangle */
LCD_DrawRect(0, 319, 239, 320);
/* Check which key is pressed */
pressedkey = ReadKey();
while(pressedkey == NOKEY)
{
/* Check which key is pressed */
pressedkey = ReadKey();
LCD_SetTextColor(color);
color += 0x10;
LCD_DrawCircle(120, 160, radius);
radius -= 1;
if(radius == 0)
{
radius = 110;
}
}
/* Clear the LCD */
LCD_Clear(White);
/* Display the previous menu */
DisplayMenu();
/* Enable the JoyStick interrupts */
IntExtOnOffConfig(ENABLE);
}
/*******************************************************************************
* Function Name : STM32Intro
* Description : Display the STM32 introduction.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void STM32Intro(void)
{
/* Set the Back Color */
LCD_SetBackColor(White);
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
LCD_DrawBMP(0x0064FD00);
Delay(100);
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
LCD_DrawBMP(SlideAddr[0]);
Delay(100);
}
/*******************************************************************************
* Function Name : HelpFunc
* Description : Display the Help menu.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void HelpFunc(void)
{
IntExtOnOffConfig(DISABLE);
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
LCD_DrawBMP(0x00675600);
while(ReadKey() == NOKEY)
{
}
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_DisplayStringLine(Line0, "UP, DOWN, RIGHT and ");
LCD_DisplayStringLine(Line1, "LEFT push-buttons ");
LCD_DisplayStringLine(Line2, "perform circular ");
LCD_DisplayStringLine(Line3, "navigation in the ");
LCD_DisplayStringLine(Line4, "main menu, current ");
LCD_DisplayStringLine(Line5, "menu items. SEL ");
LCD_DisplayStringLine(Line6, "push-button selects ");
LCD_DisplayStringLine(Line7, "the current item. UP");
LCD_DisplayStringLine(Line8, "and DOWN perform ");
LCD_DisplayStringLine(Line9, "vertical navigation.");
while(ReadKey() == NOKEY)
{
}
LCD_Clear(White);
DisplayMenu();
IntExtOnOffConfig(ENABLE);
}
/*******************************************************************************
* Function Name : AboutFunc
* Description : Display the About menu.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void AboutFunc(void)
{
LCD_Clear(White);
IntExtOnOffConfig(DISABLE);
while(ReadKey() != NOKEY)
{
}
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_ClearLine(Line0);
LCD_DisplayStringLine(Line1, " STM3210B-EVAL ");
LCD_DisplayStringLine(Line2, " Demonstration ");
LCD_DisplayStringLine(Line3, " Version 1.1 ");
LCD_ClearLine(Line4);
LCD_DisplayStringLine(Line5, "MCD Application Team");
LCD_DisplayStringLine(Line6, " COPYRIGHT 2007 ");
LCD_DisplayStringLine(Line7, " STMicroelectronics ");
LCD_ClearLine(Line8);
LCD_DisplayStringLine(Line9, " www.st.com/stm32 ");
while(ReadKey() == NOKEY)
{
}
LCD_Clear(White);
DisplayMenu();
IntExtOnOffConfig(ENABLE);
}
/*******************************************************************************
* Function Name : ProductPres
* Description : Display the About menu.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void ProductPres(void)
{
vu32 index = 0, KeyState = 0;
IntExtOnOffConfig(DISABLE);
while(ReadKey() != NOKEY)
{
}
if (Get_WaveFileStatus() == Valid_WAVE_File)
{
/* Start Wave audio playing */
WavePlayer_Start();
}
else
{
LCD_DisplayStringLine(Line5, " No loaded wave file");
LCD_DisplayStringLine(Line6, " Press JoyStick to ");
LCD_DisplayStringLine(Line7, " continue... ");
while(ReadKey() == NOKEY)
{
}
LCD_Clear(White);
DisplayMenu();
IntExtOnOffConfig(ENABLE);
return;
}
LCD_Clear(White);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
LCD_ClearLine(Line0);
LCD_DisplayStringLine(Line1, " Press SEL to start ");
LCD_ClearLine(Line2);
LCD_ClearLine(Line3);
LCD_DisplayStringLine(Line4, " When presentation ");
LCD_DisplayStringLine(Line5, "starts use RIGHT and");
LCD_DisplayStringLine(Line6, "LEFT to go to the ");
LCD_DisplayStringLine(Line7, "next/previous slide ");
LCD_DisplayStringLine(Line8, "and SEL to exit ");
LCD_ClearLine(Line9);
while(ReadKey() != SEL)
{
}
while(ReadKey() != NOKEY)
{
}
/* Enable the SysTick Counter */
SysTick_CounterCmd(SysTick_Counter_Enable);
while(index < 14)
{
WavePlayer_Pause();
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
/* Slide n
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -