完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
是这样的,我有一个中断引脚,需要检测频率为100k的中断,但是任务调度频繁的开关中断,导致我中断隔断时间就丢失了几次,怎么解决? 又了解到如果使用BASEPRI代替PRIMASK 的话,可以设置一个阈值,让高优先级的中断不被屏蔽,于是我做了下面的修改 奇怪的是我使用BASEPRI的话,会导致直接进入hardfault,求告知怎么才能让我最高优先级的io中断不被关闭掉? |
|
相关推荐
3个回答
|
|
|
|
|
|
可考虑不关中断的RTOS,如RTX 4/5、CosyOS(新一代国产开源RTOS,全中文配置GUI),均可实现零中断延迟。
|
|
|
|
首先需要明确,关闭全局中断是为了保证中断处理程序的实时性,但是也可能会影响到其他需要在中断之间执行的任务。因此,需要谨慎决定是否关闭全局中断。
针对你的情况,你可以考虑以下几个方案: 1. 调整任务调度的频率:如果任务调度太频繁导致中断丢失,可以尝试调整任务调度的频率,让它不要影响中断处理。 2. 使用临界区控制中断处理程序的执行:可以在中断处理程序中使用临界区控制,在处理完中断前禁止任务调度,避免中断处理过程被打断。具体可以使用rt_enter_critical()和rt_exit_critical()函数。 3. 使用低优先级中断服务程序:可以将中断服务程序设计成低优先级的,然后在优先级更高的任务中定时查询中断状态来处理中断。这样就可以保证中断不被丢失,并且避免了频繁关闭全局中断的问题。 至于你使用BASEPRI导致进入hardfault的问题,可能是因为你没有正确配置NVIC中的优先级分组。在使用BASEPRI时,要注意确保中断优先级的设置不会导致死锁或优先级反转等问题。建议你参考相关文档和实例进行调试。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
794 浏览 0 评论
4650 浏览 0 评论
如何使用python调起UDE STK5.2进行下载自动化下载呢?
2588 浏览 0 评论
开启全新AI时代 智能嵌入式系统快速发展——“第六届国产嵌入式操作系统技术与产业发展论坛”圆满结束
2945 浏览 0 评论
获奖公布!2024 RT-Thread全球巡回线下培训火热来袭!报名提问有奖!
31650 浏览 11 评论
73044 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 21:58 , Processed in 0.639118 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号