OpenEdv-开源电子网

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

关于FreeRTOS滴答定时器优先级问题

[复制链接]

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-15
在线时间
8 小时
发表于 2018-6-23 11:55:00 | 显示全部楼层 |阅读模式
1金钱
FreeRTOS滴答定时器的优先级不是最低吗,这里怎么是最高的呢?

FreeRTOS滴答定时器优先级

FreeRTOS滴答定时器优先级

最佳答案

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

按道理来讲SYSTICK要最高,毕竟系统的任务切换要及时,但是SYSTICK设置为最高的话就老是频繁的打断其他的中断,影响其他中断的运行,所以例程里面改为最低了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2018-6-23 11:55:01 | 显示全部楼层
按道理来讲SYSTICK要最高,毕竟系统的任务切换要及时,但是SYSTICK设置为最高的话就老是频繁的打断其他的中断,影响其他中断的运行,所以例程里面改为最低了
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-15
在线时间
8 小时
 楼主| 发表于 2018-6-23 11:57:46 | 显示全部楼层
????
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-15
在线时间
8 小时
 楼主| 发表于 2018-6-23 12:00:05 | 显示全部楼层
有没有人有同样的疑惑啊
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-23 13:56:16 | 显示全部楼层
本帖最后由 275891381 于 2018-6-23 14:02 编辑

//NVIC_SetPriority (SysTick_IRQn, x);默认是NVIC_SetPriority (SysTick_IRQn,15);但是弄到最高,freertos就管不住了,不知道会不会有问题,你可以试试
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-15
在线时间
8 小时
 楼主| 发表于 2018-6-23 16:20:20 | 显示全部楼层
zuozhongkai 发表于 2018-6-23 14:59
按道理来讲SYSTICK要最高,毕竟系统的任务切换要及时,但是SYSTICK设置为最高的话就老是频繁的打断其他的中 ...

好的  有点明白了
回复

使用道具 举报

3

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2017-4-15
在线时间
8 小时
 楼主| 发表于 2018-6-23 16:20:45 | 显示全部楼层
275891381 发表于 2018-6-23 13:56
//NVIC_SetPriority (SysTick_IRQn, x);默认是NVIC_SetPriority (SysTick_IRQn,15);但是弄到最高,freertos ...

管不住是什么意思啊
回复

使用道具 举报

51

主题

2165

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10652
金钱
10652
注册时间
2017-4-14
在线时间
2780 小时
发表于 2018-6-23 17:10:40 | 显示全部楼层
本帖最后由 275891381 于 2018-6-23 17:15 编辑
EndlessCode 发表于 2018-6-23 16:20
管不住是什么意思啊

假如优先级一共16级
freertos能开关的中断最大优先级是configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY  -15
比如临界段代码保护,不知道是不是就管不住滴答定时器了,滴答定时器还会产生任务调度,是不是滴答定时器优先级最大只能设置到configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY  
具体的也没深入研究过,你可以查查
回复

使用道具 举报

50

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1126
金钱
1126
注册时间
2014-8-24
在线时间
146 小时
发表于 2019-11-27 16:22:16 | 显示全部楼层
本帖最后由 tao475824827 于 2019-11-27 16:24 编辑

还有有些不太懂。
之前的个人感觉是,kernel的中断应该优先级最高才对,
系统计时和任务切换,不然不就计时不准和任务切换不及时吗。

但是代码中都是设置成最低,网上找的解释是“内核中断不应该打断用户中断”,感觉和第一感觉有些冲突。
其他的操作系统也是这样的吗?
如果说是担心影响其他中断,那不还是不能把系统中断优先级太高吗
找一份喜欢的工作,这样每天工作的8个小时是快乐的。 找一个喜欢的人,这样每天工作之外的16个小时也是快乐的。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-8-12
在线时间
2 小时
发表于 2019-12-7 16:53:17 | 显示全部楼层
zuozhongkai 发表于 2018-6-23 11:55
按道理来讲SYSTICK要最高,毕竟系统的任务切换要及时,但是SYSTICK设置为最高的话就老是频繁的打断其他的中 ...

如果设置成最低的话,任务切换直接在SYSTICK中完成就好了,那么PendSV也没意义了,请问是这样吗?
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2019-12-19
在线时间
2 小时
发表于 2019-12-19 16:16:23 | 显示全部楼层
中断的优先级要高于内核。所以,systick中断的优先级比所有的任务都要高。这是系统的运行时钟,软件定时器的时基。至于1mS中断一次,这个打断不算什么。这要看你的系统频率。如果设成100K,那就会影响程序的执行效率了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 21:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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