完善资料让更多小伙伴认识你,还能领取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时,要注意确保中断优先级的设置不会导致死锁或优先级反转等问题。建议你参考相关文档和实例进行调试。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1033 浏览 0 评论
2877 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9386 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2898 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2302 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:13 , Processed in 0.585194 second(s), Total 46, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1511