OpenEdv-开源电子网

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

FreeRTOS时间片问题不正常输出。

[复制链接]

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2018-12-17
在线时间
39 小时
发表于 2021-9-10 13:58:46 | 显示全部楼层 |阅读模式
9金钱
两个任务一个:
任务一:
    printf("1");
    DWT_Delay_us(100);

任务二:
   printf("2");
   DWT_Delay_us(100);

优先级相同。开始运行时输出1111111111222222222211111111112222222222按理说一直这样输出是对的,但是两三分钟后就只输出2不输出1.过段时间又正常,然后再过段时间又只输出1。这是什么问题??有大神知道么??

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

使用道具 举报

2

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2021-9-10 15:31:16 | 显示全部楼层
为什么不是用RTOS的时钟函数接口?
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2018-12-17
在线时间
39 小时
 楼主| 发表于 2021-9-10 17:01:27 | 显示全部楼层
lpwithv 发表于 2021-9-10 15:31
为什么不是用RTOS的时钟函数接口?

什么?你说用vTaskDelay()这个函数?这个不是ms级的延时么
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2018-12-17
在线时间
39 小时
 楼主| 发表于 2021-9-10 17:05:00 | 显示全部楼层
找到问题了,但不懂为什么,把printf和DWT延时放临界段保护中可以解决问题。有人知道根本原因么??
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2021-9-10 21:31:52 | 显示全部楼层
你的rtos的时钟频率是多少???延时用us,为啥不用系统的延时函数,一般printf输出大约占用1ms左右,看输出参数,实际项目中,可以建立一个log线程,专门负责输出log信息的,printf重新定向,printf完毕之后flush一下提示log线程可以输出了
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12687
金钱
12687
注册时间
2012-11-26
在线时间
3710 小时
发表于 2021-9-11 09:07:05 | 显示全部楼层
九个皇后 发表于 2021-9-10 17:05
找到问题了,但不懂为什么,把printf和DWT延时放临界段保护中可以解决问题。有人知道根本原因么??

因为串口会被抢占,你弄一个2值信号量或者互斥信号量,应该可以解决

学无止境
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2018-12-17
在线时间
39 小时
 楼主| 发表于 2021-9-14 15:41:50 | 显示全部楼层
八度空间 发表于 2021-9-10 21:31
你的rtos的时钟频率是多少???延时用us,为啥不用系统的延时函数,一般printf输出大约占用1ms左右,看输 ...

我用printf做个实验,实际是用us实现脉冲输出,用的时候也是这问题,所以我输出来看下而已。不要问为什么不用定时器,我就想问用这方法为什么不行。
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2018-12-17
在线时间
39 小时
 楼主| 发表于 2021-9-14 15:43:26 | 显示全部楼层
jermy_z 发表于 2021-9-11 09:07
因为串口会被抢占,你弄一个2值信号量或者互斥信号量,应该可以解决

这是相同优先级的啊,按时间片切换运行的吧,前期为什么又正常
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12687
金钱
12687
注册时间
2012-11-26
在线时间
3710 小时
发表于 2021-9-14 16:00:38 | 显示全部楼层
九个皇后 发表于 2021-9-14 15:43
这是相同优先级的啊,按时间片切换运行的吧,前期为什么又正常

那得看你 freertos的时基和时间片了 还有看你DWT_Delay_us函数里怎么实现的
学无止境
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 18:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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