写几条指令实现对pic 中断优先级级的设置(具体说明哪个中断是什么优先级)、中断的开放和中断的禁止

第7章:中断_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第7章:中断
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
你可能喜欢单片机简答题与答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
单片机简答题与答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用5下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩1页未读,继续阅读
你可能喜欢80C51单片机有5个中断源,但只能设置两个中断优先级。因此,在中断优先级安排上受到一定的限制。试问以下几种中断优先顺序的安排(级别由高到低)是否可能?若可能,则应如何设置中断源的中断级别?否则,请简述不可能的理由。(1)定时器0,定时器1,外中断0,外中断1,串行口中断。(2)串行口中断,外中断0,定时器0溢出中断,外中断1,定时器1溢出中断。(3)外中断0,定时器1溢出中断,外中断1,定时器0溢出中断,串行口中断。(4)外中断0,外中断1,串行口中断,定时器0溢出中断,定时器1溢出中断。求大神解答
(1)可能。ET0、ET1设为高优先级。(2)可能。ES设为高优先级。(3)不可能。ET1、EX1、ET0顺序完全颠倒,两个优先级无法满足。(4)可能。EX0、ET1、ES设为高优先级。
为您推荐:
扫描下载二维码需要确认注册邮箱后才能开通博客,
>>>PIC24HJ单片机自学笔记_中断优先级和陷阱中断
1年会员勋章目前已领取。领取条件:&凡是注册时间一年以上的活跃用户即可领取该勋章。
2年会员勋章目前未领取。领取条件:&凡是注册时间两年以上的活跃用户即可领取该勋章。
StepRocker的博客&&Guitronic手工坊
博主:&&&&
生活可以很简单,梦见了,就去做。
文章(75)&&&&
访问(89674)&&&&
评论(61)&&&&
投票(49)&&&&
订阅本博&&
博文列表查看方式:
需要确认注册邮箱后才能下载,
简介:PIC24HJ中断控制器模块将众多的中断请求简化成一个对CPU的中断,有如下的特点:高达8个处理器异常和软件嵌套7个优先级126个中断向量表IVT每个向量和异常源分配一个向量用户优先级内的混合优先级用于调试支持的交替向量表固定的中断入口和返回126个中断源的结构如下:中断向量表:126个向量表包括了8个未掩膜的向量号,以及118个中断源。每一个向量包括了24位宽度的地址,指向中断服务程序。辅向量表:在INTCON2中定义了此位,该向量表用于调试,如果不需要用,可以关掉。复位序列:器件复位不是一个真正的异常,以为复位以后,PC从0开始执行,所以不需要中断程序来执行支持复位的操作。中断向量号的细节如下:可以看出,每一个地址已经固定了一个中断向量号。CPU的优先级状态:CPU可以工作在16个优先级状态下,中断和陷阱源必须比现有的CPU的优先级更高,可以设置外设或者外部中断的中断源在0~7,而CPU设置优先级在8~15.未掩膜的中断源用于检测硬件和软件的问题,优先级是固定的。中断源的优先级不能设置为0,以为优先级不能比CPU优先级更高。?可以功过IPL2~0和IPL3来设计CPU的优先级,比如设置CPU的优先级IPL2~0为3,则0123的优先级中断服务程序将不再有效。IPL3用来设置陷阱中断,显然,可以清零,而不能置位。如果设置IPL为111,则所有的用户中断都被关掉。中断优先级:每一个外设源可以设计0~7的一个优先级。每一个IPC寄存器中包含4个3位的优先级设置值,可以设置成0~7.优先级可以在1~7中间进行设置,如果设置成0,则不会被执行到。在配置优先级的时候,一定要注意先关掉中断,否则会产生意外的结果。一个优先级,可以对应很多不同的中断源,如果优先级相同,则按照IVT上的顺序来排队,更低的向量号有更高的优先级。也就是说,先看优先级设置,再查找IVT的列队顺序来决定谁的优先级更高。无掩膜的陷阱中断有如下几种陷阱中断:振荡器错误堆栈错误地址错误算法错误DMAC错误他们的优先级顺序见上表上面的几种陷阱分为两种,一种是软陷阱,一种是硬陷阱。DMAC陷阱(优先级为10),算法错误陷阱(优先级为11)和堆栈陷阱(优先级为12)成为软陷阱源。软陷阱的处理方式和IVT中的中断一样处理,在异常处理之前需要两个周期的采样和响应,因此,软陷阱响应之前,还会继续执行执行指令。堆栈错误陷阱:复位的时候,堆栈的位置在0X0800,如下:如果堆栈指针指向了比0X0800更低的地址,将干涉SFR,另外有一个堆栈指针限制寄存器SPLIM。如果堆栈指针超出了SPLIM,也产生一个堆栈陷阱中断。算法错误陷阱:这个很简单,除数不能是0,如果是0,则触发这个陷阱,在软件里面必须清零这个陷阱,否则将一直循环下去。DMAC错误陷阱:RAM写冲突和准备RAM写冲突,也就是当CPU和DMA都打算写目标地址,CPU胜出,DMA错误陷阱。硬陷阱:硬陷阱的优先级更高,地址错误(优先级为13),振荡器错误(优先级14)。硬陷阱的优先级不能设置,与软陷阱不同的是,硬陷阱强制CPU停止执行代码,直到陷阱被清除。如果有低优先级中断程序在执行,则必须先处理硬陷阱,并处理完成以后,低优先级程序才能继续进行。如果多个硬陷阱发生,只能复位器件了。器件会自动复位硬陷阱的条件,陷阱复位标志中可以查看到复位的类型,如下:TRAPR=1:陷阱冲突复位发生。振荡器失败陷阱:如下原因可以导致振荡器失败陷阱:时钟监视器打开,发现没有时钟正常使用PLL时,发现PLL丢失。监视打开,在上电复位时发现PLL异常这里注意,在陷阱处理函数中,要记得清零,否则将一直循环。地址错误陷阱:如下情况会导致地址错误陷阱:取数据失败位篡改数据获取位置错误执行跳转指令,没有发现该地址PC指向不知名地址同样,处理完陷阱,要记得清零,避免一直循环。关中断指令:在时间要求很高的代码中,可以插入高达16384条指令的关中断。当然,只能关1~6的中断,如果设置为7或者陷阱中断,则关中断无效。并且,既然有一个关掉的时间限制,当然有一个响应的计数器,DISICNT,其中有14位有效,每执行一条指令,减一。直到减完后,中断自动打开。此寄存器还可以读写,在关掉中断之前,必须先写入一个稳定的数值进去。中断操作:中断使能后,如果中断标志指示有中断请求,则优先级开始评估要处理哪一个中断函数。如果IPL中设置的处理器优先级低于用户的优先级,则开启启动响应中断,开始压栈:PC,状态寄存器,IPL3状态。PC自不用说,IPL则保存刚刚执行的优先级值。中断返回:RETFIE指令返回,并将刚刚压入的数据解出来。嵌套:INTCON1的NSTDIS可以设置中断的嵌套,如果设置此位为1,则设置有,强制CPU=7,不再执行其他程序。从睡眠和闲置模式下唤醒:中断是单独使能的,任何使能的中断源将处理器从睡眠和闲置模式下唤醒。当处理器唤醒,会发生:如果优先级高于当前CPU的优先级,则开始处理中断。级别不够?继续睡觉……ADC转换请求和外部中断支持。关于中断处理的时间和步骤,以及各个中断相关寄存器,见下文。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
&&&&&&有[ 0 ]名读者喜欢此文
阅读(1393)&&
最近到访博主
评论是对思考最好的总结…
你还可以输入1000字
转发到我的博客
评论&&的“PIC24HJ单片机自学笔记_中断优先级和陷阱中断”
简介:PIC24HJ中断控制器模块将众多的中断请求简化成一个对CPU的中断,有如下的特点:高达8个处理器异常和软件嵌套7个优先级126个中断向量表IVT每个向量和异常源分配一个向量用户优先级内的混合优先级用于调试支持的交替向量表固定的中断入口和返回126个中断源的结构如下:中断向量表:126个向量表...
你还可以输入30000字
同时评论给&StepRocker
09年毕业,一年工程维护,走南闯北,想做技术来到深圳。
10年,汇编安防,半年辞,华为打杂,半年辞职。
11年,某集成电路厂做FAE,13年辞回长沙。
14年,30平的独立小空间。
梦想依然没有忘记,做一个有见识的工程师。
wang925115&&15:38 02-16
花自飘零水自流&&19:34 08-24
花自飘零水自流&&19:28 08-24
likai&&16:59 08-21
zcz2004&&17:58 08-19
成员32名创建者:
成员84名创建者:
成员103名创建者:
-- Use of this website is subject to its terms of use.
京ICP备号-4 |
京公网安备37 |
新版社区已上线,旧版论坛、博客将停用
1、为防数据丢失,旧版论坛、博客不再接受发帖;
2、老用户只需重设密码,即可直接登录新平台;
3、新版博客将于8月底完美归来,敬请期待;
4、全新论坛、问答,体验升级、手机阅读更方便。查看: 522|回复: 6
为什么几乎每个例程里面都有“设置系统中断优先级分组2”和“初始化串口波特率为115200”,屏蔽掉就不行了呢?
主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间8 小时
为什么几乎每个例程里面都有“设置系统中断优先级分组2”和“初始化串口波特率为115200”,屏蔽掉就不行了呢?
主题帖子精华
中级会员, 积分 280, 距离下一级还需 220 积分
在线时间59 小时
设置中断优先级分组,你可以去掉,前提是你所应用的所有外设中没有一个需要用到中断的,记住,我这里说的是,没有一个!,如果要是有两个及以上的外设需要中断应用的话,你就必须设置中断优先级分组,不然的话,如果在某一个时刻,多个中断同时发生了,那请问,你STM芯片执行哪个中断应用请求,这样很容易将芯片损坏的
至于初始化串口波特率为115200,你也可以去掉,如果你所设计的这个程序中,没有用到USART/UART的时候,你就可以去掉,不过我建议,你还是都加上吧,有个良好的编程思维
其实,我也是个新手,我不知道我说的对不对
主题帖子精华
在线时间71 小时
设置中断优先级分组,你可以去掉,前提是你所应用的所有外设中没有一个需要用到中断的,记住,我这里说的是 ...
很久没接触stm32了,大概记得cortex m3有默认抢占优先级和响应优先级的,不可能出现同个响应优先级的情况。至于说由于没设置中断分组导致硬件损坏,那更是匪夷所思,胡说八道了。
主题帖子精华
在线时间71 小时
楼主所说的不行是指哪方面不行?如果你有用到串口,那肯定要先进行初始化。串口在单片机里经常用于通信,比如调试的。
主题帖子精华
新手上路, 积分 33, 距离下一级还需 17 积分
在线时间8 小时
楼主所说的不行是指哪方面不行?如果你有用到串口,那肯定要先进行初始化。串口在单片机里经常用于通信,比 ...
我找到问题了,用液晶屏的时候一定要开串口,因为要用到printf函数,不然会液晶屏会死机,我说的不行就是没任何显示
主题帖子精华
中级会员, 积分 280, 距离下一级还需 220 积分
在线时间59 小时
很久没接触stm32了,大概记得cortex m3有默认抢占优先级和响应优先级的,不可能出现同个响应优先级的情况 ...
我只是想表达,容易造成程序混乱的意思
主题帖子精华
在线时间71 小时
<font color="#9192760 发表于
我找到问题了,用液晶屏的时候一定要开串口,因为要用到printf函数,不然会液晶屏会死机,我说的不行就是 ...
我也不太清楚为什么不行。大概记得原子的代码,printf是调用重载putch,通过串口的查询发送来实现的。可能是因为没有初始化串口的话,串口时钟没有开启,无法启动传输,程序一直查询等待发送完毕,导致死循环吧。真实原因是什么,得看到代码才能确定。
Powered by

我要回帖

更多关于 pic 中断优先级 的文章

 

随机推荐