📄 app.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 + -