完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IFX_INTERRUPT(OS_CAT2_General_Handler,0,6);
IFX_INTERRUPT(OS_CAT2_General_Handler,0,5); 为什么我不能在不同的优先级中安装相同的处理程序? 我需要一个解决方案,在不同的优先级中安装相同的处理程序(ISR),以便在我的项目中处理 CAT2 中断,但我不能上传项目,因为我签署了 NDA。 |
|
相关推荐
1个回答
|
|
在不同优先级安装相同的处理程序可能会导致一些问题,因为中断处理程序(ISR)是按照优先级顺序执行的。如果相同的处理程序在不同的优先级上注册,较低优先级的中断可能会被较高优先级的中断覆盖,导致中断处理不正确。
为了解决这个问题,您可以采取以下步骤: 1. 创建一个通用的中断处理函数,该函数可以处理所有CAT2中断。在这个函数中,您可以使用一个变量(例如:interrupt_type)来区分不同类型的中断。 ```c void General_ISR(void) { if (interrupt_type == 1) { // 处理中断类型1 } else if (interrupt_type == 2) { // 处理中断类型2 } // ... 其他中断类型 } ``` 2. 在中断类型1和中断类型2的ISR中,设置interrupt_type变量,并调用通用的中断处理函数。 ```c void ISR_Type1(void) { interrupt_type = 1; General_ISR(); } void ISR_Type2(void) { interrupt_type = 2; General_ISR(); } ``` 3. 使用IFX_INTERRUPT宏在不同的优先级上注册ISR_Type1和ISR_Type2。 ```c IFX_INTERRUPT(ISR_Type1, 0, 6); IFX_INTERRUPT(ISR_Type2, 0, 5); ``` 这样,您可以在不同的优先级上安装相同的处理程序,同时确保每个中断类型都能被正确处理。请注意,这种方法可能会导致中断处理的复杂性增加,因此请确保在实现时仔细考虑各种中断类型之间的交互。 |
|
|
|
只有小组成员才能发言,加入小组>>
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
5453 浏览 2 评论
4076 浏览 9 评论
请问TLE5012B_E1000 启动后为什么位置不能正确获取
3593 浏览 9 评论
1204 浏览 8 评论
3496 浏览 7 评论
414浏览 2评论
246浏览 2评论
354浏览 2评论
TLE9879_BLDC电机启动需要用手拨一下才能转动,怎么解决?
5471浏览 2评论
如果是打开已有的dave工程,怎么查看这个工程选择的mcu型号?
418浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:13 , Processed in 0.792246 second(s), Total 49, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号