调用 HwiP_disable ()会禁用优先级为7的中断,但仍会生成优先级为0-6的中断。
我想禁用所有优先级中断。
文档内容为"禁用所有中断"。 但这个 API 不是吗?
Priority 是指 HwiP_structure ()的参数 HwiP_Params.priority。
环境
CCS:12.6.0.00008
- AM62x MCU+ SDK : 09.02.00.38
-董事会:SK_AM62
-核心:M4F
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
调用 HwiP_disable ()会禁用优先级为7的中断,但仍会生成优先级为0-6的中断。
我想禁用所有优先级中断。
文档内容为"禁用所有中断"。 但这个 API 不是吗?
Priority 是指 HwiP_structure ()的参数 HwiP_Params.priority。
环境
CCS:12.6.0.00008
- AM62x MCU+ SDK : 09.02.00.38
-董事会:SK_AM62
-核心:M4F
您好!
感谢您的耐心等待。
我能够在末端重现此问题并找到问题的根本原因。
为 Hwip_disable () API 在内部调用 _set_interrupt_priority () 一种 API、它以 低于特定级别的紧急性禁用所有中断、并使 M4F 内核的较高紧急性的中断完全不被禁用。
在 HwiP_禁用 M4F 内核的 API 以低于指定的方式调用 API、这仅禁用优先级小于或等于7的中断。
_set_interrupt_priority((7U) << (HwiP_NVIC_PRI_SHIFT))
请使用以下代码更新 HwiP_disable API。
uintptr_t HWI_SECTION HwiP_disable(void)
{
return (uintptr_t)_set_interrupt_priority((1U) << (HwiP_NVIC_PRI_SHIFT));
}
API 可在以下位置找到: ${MCU+SDK}\source\kernel\nortos\dpl\m4\Hwip_armv7m.c 文件。 使用上述更改更新文件后、重新编译库。
从以下位置运行以下命令: ${MCU+SDK}\source\kernel\nortos 目录 。
gmake -f makefile.am62x.m4f.ti-arm-clang PROFILE=debug clean gmake -f makefile.am62x.m4f.ti-arm-clang PROFILE=release clean
gmake -f makefile.am62x.m4f.ti-arm-clang PROFILE=debug gmake -f makefile.am62x.m4f.ti-arm-clang PROFILE=release
重新生成应用程序。
在执行上述步骤之后、您将能够禁用所有需要优先级为0的中断的中断。
此致、
图沙尔