#include "stm32f10x.h"
#include "lcd.h"
#include "delay.h"
#include "touch.h"
#include "flash.h"
#include "key.h"
#include "led.h"
#include "usart.h"
#include "sarm.h"
#include "malloc.h"
#include "GUI.h"
#include "timer.h"
#include "GUIDemo.h"
#include "includes.h"
//¿aê¼èÎÎñ
#define START_TASK_PRIO 3
#define START_STK_SIZE 256
OS_TCB StartTasTCB;
CPU_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *p_arg);
//LED0 ÏÔê¾èÎÎñ
#define LED0_START_TASK_PRIO 4
#define LED0_START_STK_SIZE 128
OS_TCB LED0_StartTasTCB;
CPU_STK LED0_START_TASK_STK[LED0_START_STK_SIZE];
void led0_task(void *p_arg);
//LED1 ÏÔê¾èÎÎñ
#define LED1_START_TASK_PRIO 5
#define LED1_START_STK_SIZE 128
OS_TCB LED1_StartTasTCB;
CPU_STK LED1_START_TASK_STK[LED1_START_STK_SIZE];
void led1_task(void *p_arg);
int main(void)
{
OS_ERR err;
CPU_SR_ALLOC();
/* 3õê¼»ˉ */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //éèÖÃNVICÖD¶Ï·Ö×é2:2λÇàÕ¼óÅÏ輶£¬2λÏìó|óÅÏ輶
// uart_init(115200);
delay_init(72);
LED_Init();
// KEY_Init();
// SRAM_Config();
// TFT_Init();
// FLASH_Init();
// delay_ms(500);
// TOUCH_Init();
// RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC,ENABLE);
// MEMORY_Init();
// WM_SetCreateFlags(WM_CF_MEMDEV);
// GUI_Init();
OSInit(&err);
OS_CRITICAL_ENTER();
OSTaskCreate((OS_TCB *)&StartTasTCB,
(CPU_CHAR *)"Stat Task",
(OS_TASK_PTR )start_task,
(void *)0,
(OS_PRIO )START_TASK_PRIO,
(CPU_STK *)START_TASK_STK[0],
(CPU_STK_SIZE)START_STK_SIZE/10,
(CPU_STK_SIZE)START_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void *)0,
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
(OS_ERR *)&err);
OS_CRITICAL_EXIT();
OSStart(&err);
}
void start_task(void *p_arg)
{
OS_ERR err;
CPU_SR_ALLOC();
p_arg = p_arg;
CPU_Init();
#if OS_CFG_STAT_TASK_EN > 0u
OSStatTaskCPUUsageInit(&err); //í3¼ÆèÎÎñ
#endif
#ifdef CPU_CFG_INT_DIS_MEAS_EN //èç1ûê1ÄüáË2aá¿ÖD¶Ï1رÕê±¼ä
CPU_IntDisMeasMaxCurReset();
#endif
#if OS_CFG_SCHED_ROUND_ROBIN_EN //μ±ê1óÃê±¼äƬÂÖ×aμÄê±oò
//ê1Äüê±¼äƬÂÖ×aμ÷¶è1|Äü,ê±¼äƬ3¤¶èÎa1¸öÏμí3ê±Öó½úÅÄ£¬¼è1*5=5ms
OSSchedRoundRobinCfg(DEF_ENABLED,1,&err);
#endif
OS_CRITICAL_ENTER();
OSTaskCreate((OS_TCB *)&LED0_StartTasTCB,
(CPU_CHAR *)"led0 Task",
(OS_TASK_PTR )led0_task,
(void *)0,
(OS_PRIO )LED0_START_TASK_PRIO,
(CPU_STK *)LED0_START_TASK_STK[0],
(CPU_STK_SIZE)LED0_START_STK_SIZE/10,
(CPU_STK_SIZE)LED0_START_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void *)0,
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
(OS_ERR *)&err);
OSTaskCreate((OS_TCB *)&LED1_StartTasTCB,
(CPU_CHAR *)"led1 Task",
(OS_TASK_PTR )led1_task,
(void *)0,
(OS_PRIO )LED1_START_TASK_PRIO,
(CPU_STK *)LED1_START_TASK_STK[0],
(CPU_STK_SIZE)LED1_START_STK_SIZE/10,
(CPU_STK_SIZE)LED1_START_STK_SIZE,
(OS_MSG_QTY )0,
(OS_TICK )0,
(void *)0,
(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
(OS_ERR *)&err);
OS_TaskSuspend((OS_TCB *)&StartTasTCB,&err);
OS_CRITICAL_EXIT();
}
void led0_task(void *p_arg)
{
OS_ERR err;
while(1)
{
LED0=~LED0;
OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//Ñóê±5ms
}
}
void led1_task(void *p_arg)
{
OS_ERR err;
while(1)
{
LED1=~LED1;
OSTimeDlyHMSM(0,0,0,300,OS_OPT_TIME_PERIODIC,&err);//Ñóê±5ms
}
} |
|