打印

串口中断中使用Systick中断,为什么优先级要如此设置才行?

[复制链接]
7993|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
7120223|  楼主 | 2011-4-26 18:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 7120223 于 2011-4-26 21:37 编辑

初次应用systick来做1ms延时用
本来串口中断优先级是
NVIC_PriorityGroup_0
NVIC_IRQChannelPreemptionPriority = 1;//或者其他数 都一样
NVIC_IRQChannelSubPriority = 0;          //或者其他数 都一样
//-----------------------------------------------------------------
串口中断里systick进不了中断,经过反复试验
把上面程序修改成如下
NVIC_PriorityGroup_1
NVIC_IRQChannelPreemptionPriority = 0;//只要这个设置为0,下面设置0~7都没有用
NVIC_IRQChannelSubPriority = 0;          //0~7 无效
//----------------------------------------------------------------

后来把
NVIC_PriorityGroup_1
NVIC_IRQChannelPreemptionPriority = 1;//此位设置为1,下面设置0~7,systick中断就都是可以进去了
NVIC_IRQChannelSubPriority = 0;          //0~7

这是为什么呢,中断优先级 有那些要注意的么?
沙发
LDTEST| | 2011-4-26 20:41 | 只看该作者
NVIC_PriorityGroup_0
NVIC_IRQChannelPreemptionPriority  只有 0
NVIC_IRQChannelSubPriority   0-7

NVIC_PriorityGroup_1
NVIC_IRQChannelPreemptionPriority    0   1
NVIC_IRQChannelSubPriority   0-5
不要 定义多个 不同的 NVIC_PriorityGroup

使用特权

评论回复
板凳
7120223|  楼主 | 2011-4-26 20:49 | 只看该作者
不是 我每次只是用到一个 ,这个 我一共分了3组做实验的,NVIC_PriorityGroup_1或NVIC_PriorityGroup_0我知道是不应该同时使用的。我也没有同时使用哦

使用特权

评论回复
地板
LDTEST| | 2011-4-26 21:01 | 只看该作者
:L 仔细看看,还是觉得你的描述 不够清晰, 是不是  你的串口优先级高于 systick,这样在串口中断状态下是进不了 systick 中断的

使用特权

评论回复
5
7120223|  楼主 | 2011-4-26 21:43 | 只看该作者
不是 systick的中断不是 核的么?软件配置不是只可以是0~15级的优先级么?而且软件并不可以配置systick的优先级啊,因该默认systick的中断优先级高于其他我们可配置的吧,不知道我理解对不对?

使用特权

评论回复
6
hyy12345678| | 2011-4-26 21:45 | 只看该作者
你的串口优先级高于 systick,这样在串口中断状态下是进不了 systick 中断的。

使用特权

评论回复
7
7120223|  楼主 | 2011-4-26 22:28 | 只看该作者
本帖最后由 7120223 于 2011-4-26 22:34 编辑

本来看视频上说是核的 ,以为就是默认最大优先级呢,在手册上看到他排行第六,如图

不过还是有点疑惑,默认是第六,但是我们软件自己定义的时候 好像是没有它,好像是从第七个开始的?

使用特权

评论回复
8
LDTEST| | 2011-4-27 19:43 | 只看该作者
这个优先级 可以无视,只在 主从优先级 都一样的状态下,才有意义!

使用特权

评论回复
9
ST_ARM| | 2011-4-28 09:41 | 只看该作者
上面的图中已经说明Systick的优先级的类型是:settble,说明可以对Systick的优先级进行设置。
关键是楼主对NVIC_PriorityGroup设置了两次,如果楼主不希望有中断嵌套,应设置为NVIC_PriorityGroup_0,如果要中断嵌套,就不能设置为NVIC_PriorityGroup_0,而且NVIC的Priority Group只能初始化一次。

使用特权

评论回复
10
zhiyonghe| | 2011-4-28 17:23 | 只看该作者
systick 和串口 中断 怎么会扯到抢优先级的设置问题???
systick是系统的,串口中断的优先级才需要设置,不明白……

使用特权

评论回复
11
ypldz23| | 2015-6-5 12:28 | 只看该作者
回帖还有效吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

105

主题

389

帖子

0

粉丝