搜索
bottom↓
回复: 7

内核中断如何和外设中断做优先级高低的比较?

[复制链接]

出0入14汤圆

发表于 2020-7-29 16:25:57 | 显示全部楼层 |阅读模式
Systick属于内核中断,可以通过NVIC_SetPriority ();函数设置0-15的优先级。数字越低,优先级越高。但是其他外设的优先级设置都是根据分组来的,内核中断就是0-15的数字。那假如都是15,某一个外设的分组是2,那就有2个抢占和2个响应,那就是3的抢占和3的响应优先级,那么这个外设和systick的优先级怎么做比较呢?

出0入0汤圆

发表于 2020-7-29 17:06:36 | 显示全部楼层
所以无论是freertos还是rtx都建议不使用子优先级,直接配置成0~15,共16级优先级。
我所使用的项目最多也就是用到7~10级的优先级,足够用了。

出0入14汤圆

 楼主| 发表于 2020-7-29 17:35:21 | 显示全部楼层
simplorer 发表于 2020-7-29 17:06
所以无论是freertos还是rtx都建议不使用子优先级,直接配置成0~15,共16级优先级。
我所使用的项目最多也就 ...

但是像USART串口通信还是需要响应优先级的,我之前在外部事件中断里面设delay()的系统时钟延时,然后每次进入就卡在delay()里面出不来了,因为我不知道这个改怎么判断外部事件中断和内核中断的优先级大小?

出190入0汤圆

发表于 2020-7-29 18:50:03 | 显示全部楼层
parkloey 发表于 2020-7-29 17:35
但是像USART串口通信还是需要响应优先级的,我之前在外部事件中断里面设delay()的系统时钟延时,然后每 ...

在中断里delay?如果这个中断优先级比你串口中断高,自然你串口中断得不到响应

出0入0汤圆

发表于 2020-7-29 19:08:03 | 显示全部楼层
parkloey 发表于 2020-7-29 17:35
但是像USART串口通信还是需要响应优先级的,我之前在外部事件中断里面设delay()的系统时钟延时,然后每 ...

感觉你对rtos的认知有点混乱。
首先你要区分任务优先级和硬件中断优先级,当然像ti的sysbios还有软件优先级一说。
硬件中断里面的代码尽可能的短,而且不要使用阻塞代码,也就是你说的delay,
硬件中断利用尽可能简短的代码处理事件,要处理的数据可以利用硬件中断中调用任务来执行,而不是在硬件中断中执行大段的代码。
比如说串口中断,串口中断的任务是处理接收到的数据或者发送新的数据,接收到的数据可以放到专门的fifo中,然后通过唤醒任务的方式去处理,
而不是在串口中断中等待数据。

比如modbus协议,主协议一般都是开一个任务,串口中断的作用就是收到新的数据,唤醒这个任务去处理,而不是在中断中实现完全的modbus协议。

出0入14汤圆

 楼主| 发表于 2020-7-30 09:11:37 | 显示全部楼层
simplorer 发表于 2020-7-29 19:08
感觉你对rtos的认知有点混乱。
首先你要区分任务优先级和硬件中断优先级,当然像ti的sysbios还有软件优先 ...

我才是最近刚开始看的freertos,然后实际应用也就是跑个灯而已, 目前就是做的很简单的东西,串口也是在中断中处理的,通过buffer的这种形式。希望我的程序以后可以加入rtos的这个概念,所以最近才看起来的。你那个级别太高了,我还远不及呢。 昨天查资料的时候,看到了这个链接,是这个链接:https://my.oschina.net/oceanstack/blog/371413。突然明白了,其他的外设的中断优先级如果要和内核做比较的话,就看4位编码的数字就好了,如果systick设置的是15,外设的优先级也是15(不管他是什么分组的),如果两个一样的话,就按照硬件优先级来分,数字越小越高。

出0入14汤圆

 楼主| 发表于 2020-7-30 09:12:09 | 显示全部楼层
knight_sh 发表于 2020-7-29 18:50
在中断里delay?如果这个中断优先级比你串口中断高,自然你串口中断得不到响应 ...

对的,之前就是一触发,就卡在里面

出16170入6148汤圆

发表于 2020-8-3 20:23:00 来自手机 | 显示全部楼层
打赏!

庆祝论坛“打赏”功能实施, 现在开始发技术主题,可以获得打赏
https://www.amobbs.com/thread-5735948-1-1.html
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 00:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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