OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4425|回复: 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#楼]

调用显示的时候,禁止任务调度。就可以保证。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

3

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

28

主题

110

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-2 04:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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