📄 menu.c
字号:
i += 8;
if(i >= NumberOfIcons)
{
i = (NumberOfIcons - 1);
}
}
else
{
i -= 4;
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 64, 65);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
/* Test on the MenuItemIndex value before incrementing it */
if(MenuItemIndex <= 3)
{
MenuItemIndex += 8;
if(MenuItemIndex >= NumberOfIcons)
{
MenuItemIndex = (NumberOfIcons - 1);
}
}
else
{
MenuItemIndex -= 4;
}
/* 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], 64, 65);
if(i >= 8)
{
i -= 8;
}
else
{
i += 4;
if(i >= NumberOfIcons)
{
i = (NumberOfIcons - 1);
}
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 64, 65);
/* Set the Back Color */
LCD_SetBackColor(Blue);
/* Set the Text Color */
LCD_SetTextColor(White);
/* Test on the MenuItemIndex value before incrementing it */
if(MenuItemIndex >= 8)
{
MenuItemIndex -= 8;
}
else
{
MenuItemIndex += 4;
if(MenuItemIndex >= NumberOfIcons)
{
MenuItemIndex = (NumberOfIcons - 1);
}
}
/* 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], 64, 65);
if(i == 0)
{
i = (NumberOfIcons - 1);
}
else
{
i--;
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 64, 65);
/* 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], 64, 65);
if(i == (NumberOfIcons - 1))
{
i = 0x00;
}
else
{
i++;
}
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_DrawRect(IconRect[i][0], IconRect[i][1], 64, 65);
/* 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 : STM32Intro
* Description : Display the STM32 introduction.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void STM32Intro(void)
{
u32 GPIOD_CRL = GPIOD->CRL, GPIOD_CRH = GPIOD->CRH;
u32 GPIOE_CRL = GPIOE->CRL, GPIOE_CRH = GPIOE->CRH;
u32 GPIOF_CRL = GPIOF->CRL, GPIOF_CRH = GPIOF->CRH;
u32 GPIOG_CRL = GPIOG->CRL, GPIOG_CRH = GPIOG->CRH;
/* Set the Back Color */
LCD_SetBackColor(White);
/* Set the Text Color */
LCD_SetTextColor(Blue);
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
#if STM3210E
LCD_NORDisplay(ST_LOGO);
#else
LCD_SPIDisplay(ST_LOGO);
#endif
Delay(100);
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
#if STM3210E
LCD_NORDisplay(SlideAddr[0]);
#else
LCD_SPIDisplay(SlideAddr[0]);
#endif
Delay(100);
GPIOD->CRL = GPIOD_CRL;
GPIOD->CRH = GPIOD_CRH;
GPIOE->CRL = GPIOE_CRL;
GPIOE->CRH = GPIOE_CRH;
GPIOF->CRL = GPIOF_CRL;
GPIOF->CRH = GPIOF_CRH;
GPIOG->CRL = GPIOG_CRL;
GPIOG->CRH = GPIOG_CRH;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
}
/*******************************************************************************
* Function Name : HelpFunc
* Description : Display the Help menu.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void HelpFunc(void)
{
IntExtOnOffConfig(DISABLE);
while(ReadKey() != NOKEY)
{
}
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
LCD_SetDisplayWindow(239, 0x13F, 240, 320);
#if STM3210E
LCD_NORDisplay(HELP);
#else
LCD_SPIDisplay(HELP);
#endif
while(ReadKey() != NOKEY)
{
}
while(ReadKey() == NOKEY)
{
}
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
/* 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.");
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, DISABLE);
while(ReadKey() == NOKEY)
{
}
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
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, " MCBSTM32E ");
LCD_DisplayStringLine(Line2, " Demonstration ");
LCD_DisplayStringLine(Line3, " ");
LCD_ClearLine(Line4);
LCD_DisplayStringLine(Line5, " ");
LCD_DisplayStringLine(Line6, " ");
LCD_DisplayStringLine(Line7, " ");
LCD_ClearLine(Line8);
LCD_DisplayStringLine(Line9, " www.keil.com ");
while(ReadKey() == NOKEY)
{
}
LCD_Clear(White);
DisplayMenu();
IntExtOnOffConfig(ENABLE);
}
/*******************************************************************************
* Function Name : LCD_NORDisplay
* Description : Display a picture from the NOR Flash.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void LCD_NORDisplay(u32 address)
{
u32 GPIOD_CRL = GPIOD->CRL, GPIOD_CRH = GPIOD->CRH;
u32 GPIOE_CRL = GPIOE->CRL, GPIOE_CRH = GPIOE->CRH;
u32 GPIOF_CRL = GPIOF->CRL, GPIOF_CRH = GPIOF->CRH;
u32 GPIOG_CRL = GPIOG->CRL, GPIOG_CRH = GPIOG->CRH;
/* Write/read to/from FSMC SRAM memory *************************************/
/* Enable the FSMC Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
/* Configure FSMC Bank1 NOR/SRAM2 */
FSMC_NOR_Init();
/* Read NOR memory ID */
FSMC_NOR_ReadID(&NOR_ID);
FSMC_NOR_ReturnToReadMode();
/* Slide n
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -