OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4291|回复: 10

请问一下,这个UCOS多任务程序怎么要过10几秒才进主界面啊

[复制链接]

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
发表于 2015-4-5 19:51:20 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include "led.h" #include "delay.h" #include "sys.h" #include "usart.h" #include "key.h" #include "lcd.h" #include "includes.h" /////////////////////////UCOSII任务堆栈设置/////////////////////////////////// //START 任务 //设置任务优先级 #define START_TASK_PRIO 10 //开始任务的优先级设置为最低 //设置任务堆栈大小 #define START_STK_SIZE 128 //创建任务堆栈空间 OS_STK START_TASK_STK[START_STK_SIZE]; //任务函数接口 void start_task(void *pdata); //LED1任务 //设置任务优先级 #define LED1_TASK_PRIO 5 //设置任务堆栈大小 #define LED1_STK_SIZE 64 //创建任务堆栈空间 OS_STK LED1_TASK_STK[LED1_STK_SIZE]; //任务函数接口 void led1_task(void *pdata); //LED2任务 //设置任务优先级 #define LED2_TASK_PRIO 4 //设置任务堆栈大小 #define LED2_STK_SIZE 64 //创建任务堆栈空间 OS_STK LED2_TASK_STK[LED2_STK_SIZE]; //任务函数接口 void led2_task(void *pdata); //KEY任务 //设置任务优先级 #define KEY_TASK_PRIO 2 //设置任务堆栈大小 #define KEY_STK_SIZE 64 //创建任务堆栈空间 OS_STK KEY_TASK_STK[KEY_STK_SIZE]; //任务函数接口 void key_task(void *pdata); //LCD显示任务 //设置任务优先级 #define LCD_TASK_PRIO 3 //设置任务堆栈大小 #define LCD_STK_SIZE 64 //创建任务堆栈空间 OS_STK LCD_TASK_STK[KEY_STK_SIZE]; //任务函数接口 void lcd_task(void *pdata); int main(void) { SystemInit(); delay_init(); //延时初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); LED_Init(); //初始化与LED连接的硬件接口 KEY_Init(); LCD_Init(); OSInit(); OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务 OSStart(); } //开始任务 void start_task(void *pdata) { OS_CPU_SR cpu_sr=0; pdata = pdata; OSStatInit(); //初始化统计任务.这里会延时1秒钟左右 OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断) OSTaskCreate(led1_task,(void *)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO); OSTaskCreate(led2_task,(void *)0,(OS_STK*)&LED2_TASK_STK[LED2_STK_SIZE-1],LED2_TASK_PRIO); OSTaskCreate(key_task,(void *)0,(OS_STK*)&KEY_TASK_STK[KEY_STK_SIZE-1],KEY_TASK_PRIO); OSTaskCreate(lcd_task,(void *)0,(OS_STK*)&LCD_TASK_STK[LCD_STK_SIZE-1],LCD_TASK_PRIO); OSTaskSuspend(START_TASK_PRIO); //挂起起始任务. OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断) } //LED1任务 void led1_task(void *pdata) { while(1) { LED0=!LED0; // delay_ms(300); POINT_COLOR=RED; LCD_ShowString(30,90,200,16,16,"led0 task on"); OSTimeDlyHMSM(0,0,0,300); } } //LED2任务 void led2_task(void *pdata) { while(1) { LED1=!LED1; // delay_ms(300); POINT_COLOR=RED; LCD_ShowString(30,110,200,16,16,"led1 task on"); OSTimeDlyHMSM(0,0,0,300); } } //KEY任务 void key_task(void *pdata) { u8 key; while(1) { key = KEY_Scan(0); if(key == 1) { OSTaskSuspend(LED1_TASK_PRIO); OSTaskSuspend(LED2_TASK_PRIO); POINT_COLOR=RED; LCD_ShowString(30,150,200,16,16,"TASK1"); } else if(key == 2) { OSTaskResume(LED1_TASK_PRIO); OSTaskResume(LED2_TASK_PRIO); POINT_COLOR=RED; LCD_ShowString(30,170,200,16,16,"TASK2"); } OSTimeDlyHMSM(0,0,0,10); } } //LCD显示任务 void lcd_task(void *pdata) { while(1) { // LCD_Clear(WHITE); POINT_COLOR=RED; LCD_ShowString(30,130,200,16,16,"yys_ucos"); OSTimeDlyHMSM(0,0,0,10); } } [/mw_shl_code]


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-5 20:16:31 | 显示全部楼层
你的主界面程序在哪里?主界面是什么东西?
开往春天的手扶拖拉机
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2015-4-5 20:18:02 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
就是四个任务同时工作,两个小灯,LCD显示,以及按键
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-5 20:23:22 | 显示全部楼层
你说的十几秒才进主界面是什么意思,麻烦详细的描述一下你要实现什么样的功能,现在实际上是什么样的功能
开往春天的手扶拖拉机
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2015-4-5 20:24:46 | 显示全部楼层
回复【4楼】zuozhongkai:
---------------------------------
一进去就是白屏,然后过了几秒才运行四个任务
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-4-5 20:31:27 | 显示全部楼层
没看出有什么问题。你确定4个任务都在运行啊?灯都在闪烁的啊。
开往春天的手扶拖拉机
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2015-4-5 20:45:25 | 显示全部楼层
回复【6楼】zuozhongkai:
---------------------------------
是的啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2015-4-5 22:15:28 | 显示全部楼层
仿真。。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2015-4-6 21:59:40 | 显示全部楼层
[mw_shl_code=c,true]就是这个 [/mw_shl_code]


回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2015-4-6 22:01:16 | 显示全部楼层
回复【9楼】yysforever:
---------------------------------
我点全部运行,然后运行完了,卡在这啦
回复

使用道具 举报

16

主题

85

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
331
金钱
331
注册时间
2013-12-18
在线时间
64 小时
 楼主| 发表于 2015-4-9 13:20:33 | 显示全部楼层
就是这个代码

YYSUCOSII入门实验1-1-任务调度.zip

4.52 MB, 下载次数: 122

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-1 14:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表