完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我试图了解在pic32中如何实现中断,但我不明白什么时候使用它们,根据关于延迟的信息,另外为什么要使用IPL7,编译器是否假设没有任何东西可以中断优先级7?提前感谢
|
|
相关推荐
3个回答
|
|
嗨,中断优先级7是用于中断处理的7个优先级级别的最高优先级。主程序使用优先级0。您可以设计您的程序来使用任何和所有优先级级别来处理您希望在ISR代码中处理的活动。第二个参数是中断处理程序函数声明中的_u ISR(...)宏是向编译器提供的关于如何为中断处理程序函数准备序言和后缀代码的信息,以便当离开中断句柄时可以将更改或干扰的所有内容放回原位。r.实际的优先级和SRS状态不是由_u ISR(.,code)宏中的代码确定的。实际的优先级和SRS状态是在中断发生之前由IPCx寄存器和SRS控制寄存器中的设置确定的。中断函数头中的向量号和优先级代码必须与硬件实际发生的情况相符。否则,可能会发生奇怪和没有意义的事情。如果您懒惰或不确定,那么存在欺骗的方法:如果您编写IPL0AUTO,编译器将创建代码以找出输入中断处理程序时需要什么。(我相信)SRS寄存器集的使用可以在配置设置中指定:参见上面的示例。在中断被启用之前,实际中断的优先级应该在中断优先级控制寄存器中指定:上面是用和谐框架函数编写的代码。或者,regis可以使用来自设备支持文件的ter符号,这些符号与数据表相对应:参见数据表章节(7)中断控制器中的表,了解实际的设备。
|
|
|
|
我不知道您使用的是哪种类型的PIC32,但是您可能会发现PIC32MZ EFdatasheet的表A-8中附带的屏幕截图有助于解释PIC32MX和PIC32MZ之间的差异。des为PIC32MZ分配阴影寄存器集到特定中断优先级的库函数:此外,这里是其使用的示例:
|
|
|
|
经过许多小时的战斗,我已经诉诸使用汽车几乎一切。例如:void_.((inter.(IPL2AUTO)、no_fpu、.(_DMA1_VECTOR))SparkDone2_ISR(void){确保IPLx匹配您为中断设置的优先级,或者发生奇怪的事情。可用。所以,如果你不知道SRS是否与你的特定处理器一起工作,那么如果它们可用的话,将使用它们。如果您绝对希望最小延迟并且您的处理器支持它,那么您可以使用IPLxSRS,但是必须预先设置寄存器,如果启用了任何编译器优化,则必须使用属性优化(“-fno-.-wrap”),并且必须使用当前编译器——这是一个bug在编译器删除任何Prolog的时候。即,void_.((中断(IPL7SRS)、no_fpu、向量(_EXTERNAL_2_VECTOR)、优化("-fno-.-wrap"))Int2_ISR(void){我认为没有理由在IPLxSRS选项中遇到麻烦。IPLXAUTO只是一些指令,通常是工作的。
|
|
|
|
只有小组成员才能发言,加入小组>>
5171 浏览 9 评论
2001 浏览 8 评论
1931 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3176 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2228 浏览 5 评论
737浏览 1评论
622浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
509浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
635浏览 0评论
533浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 09:13 , Processed in 1.482244 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号