OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子新作:阿波罗STM32F767&F429&探索者STM32F4开发板&赶快来下载资料哦。

查看: 909|回复: 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#楼]

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

回复

使用道具 举报

  离线 

486

主题

9万

帖子

30

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
121742
金钱
121742
注册时间
2010-12-1
在线时间
986 小时
2#
发表于 2018-2-1 23:21:11 | 只看该作者
调用显示的时候,禁止任务调度。就可以保证。
回复

使用道具 举报

  离线 

10

主题

173

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

  离线 

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2013-3-11
在线时间
44 小时
4#
发表于 2018-2-8 22:24:03 | 只看该作者
用信号量就可以了,任务0处理完释放信号让任务1去继续处理,不打断彼此
回复

使用道具 举报

  离线 

2

主题

78

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2013-3-18
在线时间
20 小时
5#
发表于 2018-2-9 10:02:38 | 只看该作者
ucos版本是哪个?两个任务优先级是怎样的?
回复

使用道具 举报

  离线 

5

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2017-10-14
在线时间
12 小时
6#
发表于 2018-2-9 17:08:45 | 只看该作者
创建一个信号量就可以解决
回复

使用道具 举报

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

本版积分规则




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

GMT+8, 2018-2-24 00:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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