|

楼主 |
发表于 2016-8-22 10:25:27
|
显示全部楼层
回 eric2013 的帖子
- #include "led.h"
- #include "beep.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "ILI93xx.h"
- #include "usart.h"
- #include "24cxx.h"
- #include "flash.h"
- #include "touch.h"
- #include "sram.h"
- #include "timer.h"
- #include "sdio_sdcard.h"
- #include "malloc.h"
- #include "GUI.h"
- #include "ff.h"
- #include "exfuns.h"
- #include "w25qxx.h"
- #include "includes.h"
- #include "dht11.h"
- /************************************************
- UCOSIIIÖDòÔÏÂóÅÏè¼¶óû§3ìDò2»Äüê1óã¬ALIENTEK
- ½«ÕaD©óÅÏè¼¶·ÖÅ䏸áËUCOSIIIμÄ5¸öÏμí3Äú2¿èÎÎñ
- óÅÏè¼¶0£oÖD¶Ï·tÎñ·tÎñ1üàíèÎÎñ OS_IntQTask()
- óÅÏè¼¶1£oê±Öó½úÅÄèÎÎñ OS_TickTask()
- óÅÏè¼¶2£o¶¨ê±èÎÎñ OS_TmrTask()
- óÅÏè¼¶OS_CFG_PRIO_MAX-2£oí3¼ÆèÎÎñ OS_StatTask()
- óÅÏè¼¶OS_CFG_PRIO_MAX-1£o¿ÕÏDèÎÎñ OS_IdleTask()
- ************************************************/
- //èÎÎñóÅÏè¼¶
- #define START_TASK_PRIO 3
- //èÎÎñ¶ÑÕ»′óD¡
- #define START_STK_SIZE 128
- //èÎÎñ¿ØÖÆ¿é
- OS_TCB StartTaskTCB;
- //èÎÎñ¶ÑÕ»
- CPU_STK START_TASK_STK[START_STK_SIZE];
- //èÎÎñoˉêy
- void start_task(void *p_arg);
- //DHT11èÎÎñ
- //éèÖÃèÎÎñóÅÏè¼¶
- #define DHT11_TASK_PRIO 4
- //èÎÎñ¶ÑÕ»′óD¡
- #define DHT11_STK_SIZE 128
- //èÎÎñ¿ØÖÆ¿é
- OS_TCB Dht11TaskTCB;
- //èÎÎñ¶ÑÕ»
- CPU_STK DHT11_TASK_STK[DHT11_STK_SIZE];
- //led0èÎÎñ
- void dht11_task(void *p_arg);
- //LED0èÎÎñ
- //éèÖÃèÎÎñóÅÏè¼¶
- #define LED0_TASK_PRIO 5
- //èÎÎñ¶ÑÕ»′óD¡
- #define LED0_STK_SIZE 128
- //èÎÎñ¿ØÖÆ¿é
- OS_TCB Led0TaskTCB;
- //èÎÎñ¶ÑÕ»
- CPU_STK LED0_TASK_STK[LED0_STK_SIZE];
- //led0èÎÎñ
- void led0_task(void *p_arg);
- int main(void)
- {
- OS_ERR err;
- CPU_SR_ALLOC();
-
- delay_init(); //Ñóê±oˉêy3õê¼»ˉ
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //éèÖÃNVICÖD¶Ï·Ö×é2:2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶
- uart_init(115200); //′®¿ú3õê¼»ˉÎa115200
- LED_Init(); //LED¶Ë¿ú3õê¼»ˉ
- TFTLCD_Init(); //LCD3õê¼»ˉ
- KEY_Init(); //°′¼ü3õê¼»ˉ
- BEEP_Init(); //3õê¼»ˉ·äÃùÆ÷
- DHT11_Init(); //3õê¼»ˉDHT11
- FSMC_SRAM_Init(); //3õê¼»ˉSRAM
- my_mem_init(SRAMIN); //3õê¼»ˉÄú2¿Äú′æ3Ø
-
- exfuns_init(); //ÎafatfsÎļtÏμí3·ÖÅäÄú′æ
- f_mount(fs[0],"0:",1); //1òÔØSD¿¨
- TP_Init(); //′¥ÃtÆá3õê¼»ˉ
-
- OSInit(&err); //3õê¼»ˉUCOSIII
- OS_CRITICAL_ENTER(); //½øèëáù½çÇø
- //′′½¨¿aê¼èÎÎñ
- OSTaskCreate((OS_TCB * )&StartTaskTCB, //èÎÎñ¿ØÖÆ¿é
- (CPU_CHAR * )"start task", //èÎÎñÃû×Ö
- (OS_TASK_PTR )start_task, //èÎÎñoˉêy
- (void * )0, //′«μY¸øèÎÎñoˉêyμÄ2Îêy
- (OS_PRIO )START_TASK_PRIO, //èÎÎñóÅÏè¼¶
- (CPU_STK * )&START_TASK_STK[0], //èÎÎñ¶ÑÕ»»ùμØÖ·
- (CPU_STK_SIZE)START_STK_SIZE/10, //èÎÎñ¶ÑÕ»éî¶èÏTλ
- (CPU_STK_SIZE)START_STK_SIZE, //èÎÎñ¶ÑÕ»′óD¡
- (OS_MSG_QTY )0, //èÎÎñÄú2¿ÏûÏ¢¶óáDÄü1»½óêÕμÄ×î′óÏûÏ¢êyÄ¿,Îa0ê±½ûÖ1½óêÕÏûÏ¢
- (OS_TICK )0, //μ±ê1Äüê±¼äÆ¬ÂÖ×aê±μÄê±¼äÆ¬3¤¶è£¬Îa0ê±ÎaĬèÏ3¤¶è£¬
- (void * )0, //óû§213äμÄ′æ′¢Çø
- (OS_OPT )OS_OPT_TASK_STK_CHK|OS_OPT_TASK_STK_CLR, //èÎÎñÑ¡Ïî
- (OS_ERR * )&err); //′æ·Å¸Ãoˉêy′íÎóê±μÄ·μ»ØÖμ
- OS_CRITICAL_EXIT(); //íË3öáù½çÇø
- OSStart(&err); //¿aÆôUCOSIII
- while(1);
- }
- //¿aê¼èÎÎñoˉêy
- 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(); //½øèëáù½çÇø
- //DHT11èÎÎñ
- OSTaskCreate((OS_TCB* )&Dht11TaskTCB,
- (CPU_CHAR* )"dht11 task",
- (OS_TASK_PTR )dht11_task,
- (void* )0,
- (OS_PRIO )DHT11_TASK_PRIO,
- (CPU_STK* )&DHT11_TASK_STK[0],
- (CPU_STK_SIZE)DHT11_STK_SIZE/10,
- (CPU_STK_SIZE)DHT11_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);
- //LED0èÎÎñ
- OSTaskCreate((OS_TCB* )&Led0TaskTCB,
- (CPU_CHAR* )"Led0 task",
- (OS_TASK_PTR )led0_task,
- (void* )0,
- (OS_PRIO )LED0_TASK_PRIO,
- (CPU_STK* )&LED0_TASK_STK[0],
- (CPU_STK_SIZE)LED0_STK_SIZE/10,
- (CPU_STK_SIZE)LED0_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(); //íË3öáù½çÇø
- OSTaskDel((OS_TCB*)0,&err); //é¾3ystart_taskèÎÎñ×Ôéí
- }
- //DHT11èÎÎñ
- void dht11_task(void *p_arg)
- {
- u8 temperature,humidity;
- OS_ERR err;
- // CPU_SR_ALLOC();
- p_arg = p_arg;
- POINT_COLOR = BLACK;
- while(1)
- {
- // OS_CRITICAL_ENTER(); //½øèëáù½çÇø
- OSSchedLock(&err);
- DHT11_Read_Data(&temperature,&humidity); //¶áè¡ÎÂêa¶èÖμ
-
-
- LCD_ShowNum(70,150,temperature,2,16); //ÏÔê¾Î¶è
- LCD_ShowNum(70,170,humidity,2,16); //ÏÔê¾êa¶è
- OSSchedUnlock(&err);
- OSTimeDlyHMSM(0,0,1,0,OS_OPT_TIME_HMSM_STRICT,&err); //Ñóê±1s
-
- // OS_CRITICAL_EXIT(); //íË3öáù½çÇø
-
-
-
- }
- }
- //LED0èÎÎñ
- void led0_task(void *p_arg)
- {
- OS_ERR err;
- while(1)
- {
- LED0 = !LED0;
- OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_PERIODIC,&err);//Ñóê±500ms
- }
- }
复制代码 eric2013:
把两个任务的代码,和创建都贴出来。 
你们的程序只有UCOSII入门实验和出厂附带的综合测试,没有UCOSIII和EMWIN结合的。基础打得不好,所以弄起来较费劲。可以弄个其他的传感器,18B20[s:130] |
|