OpenEdv-开源电子网

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

关于Freertos 优先级的理解,有些混淆。需要大侠帮回复

[复制链接]

22

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2014-7-26
在线时间
66 小时
发表于 2019-2-15 22:10:59 | 显示全部楼层 |阅读模式
1金钱
关于Freertos 优先级的理解,有些混淆。需要大侠帮回复。
图里讲的优先级0是最高的,案例里配置了优先级5以后才能用fromISR函数。
也就是说,串口中断我要发任务通知,我要把中断优先级高于5?前面的5级都要留给系统使用的。

还是说在串口中断是硬件配置中断,与freeRTOS的任务优先级无关?

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

使用道具 举报

11

主题

1041

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3696
金钱
3696
注册时间
2011-5-23
在线时间
2008 小时
发表于 2019-2-15 22:41:21 | 显示全部楼层
本帖最后由 aozima 于 2019-2-15 22:45 编辑

分清线程优先和中断优先级。

看图,这是在CM3配置中断优先级时,把一部分中断设置为永不关闭的,这些中断不能直接调用OS的fromISR API。

不管能用 fromISR 的普通中断优先级,还是不能用 fromISR 的不关闭中断优先级,都比 线程优先级  要高。

NMI(硬件限死无法关闭) > 不关闭中断(可以配置为不关闭) > 可关闭中断(可关闭) > 线程(随时被中断)

RT-Thread RTOS 音频,WIFI,蓝牙
回复

使用道具 举报

22

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2014-7-26
在线时间
66 小时
 楼主| 发表于 2019-2-16 16:15:20 | 显示全部楼层
我这样理解,我使用原子哥的freertos做模板,那么任务优先级设定时总规是15级是最高优先级。但普通中断里面要
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;  //以上的才可以使用 fromISR函数。

那我把那个管理最大优先级设个2,会对那些有影响呢?
因我一般会把串口的中断优先级设定很高,我在做数据穿透,串口一有数据就处理后给串口2了。我想知道用Freertos后,对中断优先级的设置要做那些改变。
回复

使用道具 举报

29

主题

73

帖子

0

精华

高级会员

Rank: 4

积分
511
金钱
511
注册时间
2015-10-11
在线时间
102 小时
发表于 2019-2-16 16:59:18 | 显示全部楼层
其实没有必要纠结这个,如果你要的串口优先级最高的话,你可以把串口中断优先级设置为5,以5为分水岭,其他要是用到外部中断或者是定时器中断都把优先级设置的比5大就行了
回复

使用道具 举报

10

主题

82

帖子

0

精华

高级会员

Rank: 4

积分
539
金钱
539
注册时间
2017-7-28
在线时间
109 小时
发表于 2019-2-16 18:59:16 | 显示全部楼层
分为中断优先级和任务优先级,中断优先级大于所有任务优先级(因为中断时需要响应中断),中断优先级数值越小优先级越大,任务优先级数值越大优先级越大(和ucos相反)。配置的那个优先级是freertos可管理的优先级,也就是中断中可以调用freertos的api的分界点,例如设为5,则数值小于5中断,即高优先级的几个中断不受freertos管理(例如进入临界区时关不了这几个中断),不可以在这样的中断中调用freertos的api,这样的中断用于处理紧急事件;数值大于5的中断,即低优先级的几个中断受freertos管理,可以在这样的中断中调用freertos的api。打字好累
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 23:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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