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

📄 app.c

📁 SDIO文件系统forHMI-STM32
💻 C
字号:
/*
*********************************************************************************************************
*                                              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
*                                   STM3210B-EVAL Evaluation Board
*
* Filename      : app.c
* Version       : V1.00
* Programmer(s) : Brian Nagel
*********************************************************************************************************
*/

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

#include <includes.h>
#include"GUI.H"
#include "LCD_ConfDefaults.h"
#include "WM.h"
#include "DIALOG.h"
#include "RADIO.h"#include <math.h>#include <stdlib.h>
#include "config.h"
#include "sdcard.h"


static OS_STK TaskFileStk[APP_TASK_FILE_STK_SIZE];
static OS_STK AppTaskStartStk[APP_TASK_START_STK_SIZE];
static OS_STK TaskDispStk[TASK_DISP_STK_SIZE];
static OS_STK TaskTouchStk[TASK_TOUCH_STK_SIZE];
static OS_STK TaskLcdFreshStk[TASK_LCD_FRESH_STK_SIZE];
static OS_STK TaskFileTestStk[TASK_FILE_TEST_STK_SIZE];



//static void AppTaskCreate(void);
static void AppTaskStart(void *p_arg);
static void Task_Disp(void *p_arg);
static void Task_Touch(void *p_arg);
static void Task_LcdFresh(void *p_arg);
static void Task_FileTest(void *p_arg);

extern void	 GUI_X_ExecIdle(void);


int  main (void)
{
   BSP_IntDisAll();  
   BSP_Init();                                                 /* Initialize BSP functions                                 */
   GUI_Init();

   #if (OS_TASK_STAT_EN > 0)
    OSStatInit();                                               /* Determine CPU capacity                                   */
   #endif   
                
   OSInit();                        
   OSTaskCreateExt(AppTaskStart,(void *)0,(OS_STK *)&AppTaskStartStk[APP_TASK_START_STK_SIZE-1],APP_TASK_START_PRIO,APP_TASK_START_PRIO,(OS_STK *)&AppTaskStartStk[0],APP_TASK_START_STK_SIZE,(void *)0,OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);
   OSTaskCreateExt(Task_Disp,(void *)0,(OS_STK *)&TaskDispStk[TASK_DISP_STK_SIZE-1],TASK_DISP_PRIO,TASK_DISP_PRIO,(OS_STK *)&TaskDispStk[0],
                    TASK_DISP_STK_SIZE,(void *)0,OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);

   OSTaskCreateExt(Task_Touch,(void *)0,(OS_STK *)&TaskTouchStk[TASK_TOUCH_STK_SIZE-1],TASK_TOUCH_PRIO,TASK_TOUCH_PRIO,(OS_STK *)&TaskTouchStk[0],
                    TASK_TOUCH_STK_SIZE,(void *)0,OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);

   OSTaskCreateExt(OSFileTask,(void *)0,(OS_STK *)&TaskFileStk[APP_TASK_FILE_STK_SIZE-1],APP_TASK_FILE_PRIO,APP_TASK_FILE_PRIO,(OS_STK *)&TaskFileStk[0],
                    APP_TASK_FILE_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);

   OSTaskCreateExt(Task_FileTest,(void *)0,(OS_STK *)&TaskFileTestStk[TASK_FILE_TEST_STK_SIZE-1],TASK_FILE_TEST_PRIO,TASK_FILE_TEST_PRIO,(OS_STK *)&TaskFileTestStk[0],
                    TASK_FILE_TEST_STK_SIZE,(void *)0,OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);

   OSTaskCreateExt(Task_LcdFresh,(void *)0,(OS_STK *)&TaskLcdFreshStk[TASK_LCD_FRESH_STK_SIZE-1],TASK_LCD_FRESH_PRIO,TASK_LCD_FRESH_PRIO,(OS_STK *)&TaskLcdFreshStk[0],
                    TASK_LCD_FRESH_STK_SIZE,(void *)0,OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR);	
   OSStart();                                                
}



static  void  AppTaskStart(void *p_arg)
{
  (void)p_arg;
 
    while(DEF_TRUE)
	 {  
	   OSTaskSuspend(OS_PRIO_SELF);
     }
}



/*
static void AppTaskCreate(void)
{

} */


static  void  Task_Disp(void *p_arg)
{

 (void)p_arg;
  while(DEF_TRUE) 
    {	 	 OSTaskSuspend(OS_PRIO_SELF);
    }
}


/*
*********************************************************************************************************
*                                    KEYBOARD RESPONSE TASK
*
* Description : This task monitors the state of the push buttons and passes messages to AppTaskUserIF()
*
* Arguments   : p_arg   is the argument passed to 'AppStartKbd()' by 'OSTaskCreate()'.
*
* Returns     : none
*********************************************************************************************************
*/

static void Task_Touch(void *p_arg)
{
 // u8 i;
  (void)p_arg;
   while(DEF_TRUE) 
     {
	   //OSTaskSuspend(OS_PRIO_SELF);
      // OSTimeDlyHMSM(0,0,0,10);
	  // for(i=0;i<6;i++)
	    // {
		   OSTimeDlyHMSM(0,0,0,20);
		   GUI_TOUCH_Exec();
		   GUI_TOUCH_Exec();
		   //OSTimeDlyHMSM(0,0,0,20); 
		// }
     }
}


static void Task_LcdFresh(void *p_arg)
{
  unsigned char FlashTick=0;
  (void)p_arg;

   while(DEF_TRUE)
     {
	   GUI_Exec();
	   GUI_X_ExecIdle();
	   //EXTI_GenerateSWInterrupt(EXTI_Line6);
	   FlashTick++;
	   if(FlashTick&0x01)
	     {
	   	   GPIO_SetBits(GPIOF,GPIO_Pin_6);
	     }
	   else
	     {
	   	  GPIO_ResetBits(GPIOF,GPIO_Pin_6);
	     } 
	 }
}

static void Task_FileTest(void *p_arg)
{
  HANDLE FHandle;
  unsigned int i;
  char Buf[512];
  char A[]="A:";
  char FileName[]="Test.txt";
  char NewFileName[]="NewFile.txt";
  char Dir[]="DIR2.DIR";
  char RW[]="RW";
  (void)p_arg;
  for(i=0;i<sizeof(Buf);i++)
    Buf[i]=0;

  for(i=0;i<16;i++)
    Buf[i]='A'+i;

  GUI_SetBkColor(GUI_BLACK);  //设置背景色为黑色
  GUI_SetColor(GUI_GREEN); //设置前景色为灰色
  GUI_SetFont(&GUI_FontHZ_FangSong_GB2312_14);
  GUI_DispString("文件测试任务启动\n");
   OSTimeDlyHMSM(0,0,2,0);
  OSAddFileDriver(SDCammand);
  GUI_DispString("文件驱动程序加载成功\n");
  OSTimeDlyHMSM(0,0,2,0);
  OSChangeDrive(A);
  GUI_DispString("切换到根目录\n");
  OSTimeDlyHMSM(0,0,2,0);
  if(OSRemoveDir(Dir)==RETURN_OK)
    {
	  GUI_DispString("删除DIR2.DIR目录成功\n");
	}
  else
    {
	 GUI_DispString("删除DIR2.DIR目录失败\n");
	}
  FHandle=OSFileOpen(FileName,RW);
  if(FHandle!=Not_Open_FILE)
     {
	  GUI_DispString("打开Test.txt文件成功\n");
	  OSTimeDlyHMSM(0,0,2,0);
	  OSFileSeek(FHandle,0,SEEK_END);
	  OSFileWrite(Buf,16,FHandle);
	  OSFileClose(FHandle);
	  GUI_DispString("关闭Test.txt文件成功\n");
	 }
  FHandle=OSFileOpen(FileName,RW);
  if(FHandle!=Not_Open_FILE)
     {
	  GUI_DispString("重新打开Test.txt文件成功\n");
	  OSTimeDlyHMSM(0,0,2,0);
	  OSFileRead(Buf,16,FHandle);
	  GUI_DispString("读取32个字节数据\n");
	  GUI_DispString(Buf);
	  GUI_DispString("\n");
	  OSFileClose(FHandle);
	  GUI_DispString("关闭Test.txt文件成功\n");
	 }
   FHandle=OSFileOpen(NewFileName,RW);
    if(FHandle!=Not_Open_FILE)
	  {
	    GUI_DispString("打开NewFile.txt文件成功\n");
		OSTimeDlyHMSM(0,0,2,0);
	    OSFileSeek(FHandle,0,SEEK_END);
	    OSFileWrite(Buf,16,FHandle);
		OSTimeDlyHMSM(0,0,2,0);
		OSFileRead(Buf,16,FHandle);
		GUI_DispString(Buf);
		GUI_DispString("\n");
	    OSFileClose(FHandle);
	    GUI_DispString("关闭NewFile.txt文件成功\n");
	  }
	else
	  {
	    GUI_DispString("打开NewFile.txt文件失败\n");
	  }
   GUI_DispString("文件演示完成\n");
   while(DEF_TRUE)
     {
	 
	  OSTimeDlyHMSM(0,0,1,0);
	 } 
}

⌨️ 快捷键说明

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