OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 1527|回复: 5

ucos全部变量问题

[复制链接]

  离线 

1

主题

1

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-1-15
在线时间
2 小时
发表于 2018-2-1 23:21:10 | 显示全部楼层 |阅读模式
1金钱
ucos  中
任务0执行while(1)
{
                POINT_COLOR = RED;               
                LCD_ShowString(10,20,"LED0 Task Run");

}
任务1执行
while(1)
{
               POINT_COLOR = GREEN;
               LCD_ShowString(10,40,"LED1 Task Run");

}
当任务0   执行 LCD_ShowString 打印到一半被切换到任务1
然后返回任务0后,POINT_COLOR 的颜色已经不是原来的RED。

有什么好的方法保证POINT_COLOR在各个任务原来的值呢


最佳答案

查看完整内容[请看2#楼]

调用显示的时候,禁止任务调度。就可以保证。
回复

使用道具 举报

  离线 

511

主题

9万

帖子

31

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
133718
金钱
133718
注册时间
2010-12-1
在线时间
1279 小时
发表于 2018-2-1 23:21:11 | 显示全部楼层
调用显示的时候,禁止任务调度。就可以保证。
回复

使用道具 举报

  离线 

19

主题

272

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1437
金钱
1437
注册时间
2017-7-6
在线时间
204 小时
发表于 2018-2-8 09:44:20 | 显示全部楼层
原子哥说禁止调度器固然可以 ,但是这样做会让时钟节拍任务PEND不到信号量,时基计数就不准了。我看你两个任务间没有进行切换,应该是时间片轮转调度的吧。你可以尝试把两个任务分配多一些时间片,或则两个任务间用信号量通信
回复

使用道具 举报

  离线 

8

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
189
金钱
189
注册时间
2013-3-11
在线时间
45 小时
发表于 2018-2-8 22:24:03 | 显示全部楼层
用信号量就可以了,任务0处理完释放信号让任务1去继续处理,不打断彼此
回复

使用道具 举报

  离线 

2

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2013-3-18
在线时间
24 小时
发表于 2018-2-9 10:02:38 | 显示全部楼层
ucos版本是哪个?两个任务优先级是怎样的?
回复

使用道具 举报

  离线 

12

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2017-10-14
在线时间
25 小时
发表于 2018-2-9 17:08:45 | 显示全部楼层
创建一个信号量就可以解决
回复

使用道具 举报

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

本版积分规则




关闭

报名原子哥新品发布会&粉丝见面会上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-10-18 15:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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