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.
工具/软件:Code Composer Studio
在 SCS 中,我使用传感器处理程序 A 生成任务警报(IO 上升沿回调):
fwGenAlertInterrupt();
evhSetupGpioTrigger (0、AUXIO_I_EXT、EXT_INT_SET、EVH_GPIO_TRIG_ON_EDGE);
在 CCS 任务中、使用以下函数处理警报:
void scTaskAlertCallback (void)
{
//清除警报中断源
scifClearAlertIntSource();
//唤醒操作系统任务
platfromExtSensorEvent();
//确认警报事件
scifAckAlertEvents ();
}//
问题是 scTaskAlertCallback()被称为无限警报,即使清除了警报并且在 GPIO 上不生成中断。
Amit、您好!
是否 从事件处理程序代码调用 fwGenAlertInterrupt()? 请参阅 SCS 中的按钮去抖动器示例以及如何使用 GPIO 事件触发事件代码。
Simon
您好、Simon、
已在 我的平台上的 SCS 中遵循按钮去抖动器示例,但仍不清除警报中断,并且连续调用 scTaskAlertCallback()。
如果我不使用 SCS 代码、则中断处理和清除工作 正常。
您好、Simon、
我认为我发现了导致问题的原因:
在 CPU 任务 (由 scTaskAlertCallback()发出信号)上 ,有一个到的调用: GPIO_enableInt (Board_GPIO_INT_VOX)。
Board_GPIO_INT_VOX 是触发 GPIO。
看起来从 CPU 调用 GPIO_enableInt()会触发 SCS 事件处理程序。
去除 对 GPIO_enableInt()的调用后, scTaskAlertCallback() 只调用一次,无法获取下一个中断。
有什么想法吗?
您好!
您似乎尝试从 CPU 和 SC 控制引脚。 引脚只能由 CPU 或 SC 分配。
Simon
您好、Simon、
明白了。 进行了相应修改。
我的目标 PCB 使用4个不同的 GPIO 作为触发器。
SCS 将 GPIO 事件触发器限制为3。
如何使第4个 GPIO 的触发器处理程序?
如果您需要3个以上的事件、可以对一个事件"或"多个 GPIO。
Simon
H Simon、
我将所有 GPIO 映射到一个事件处理程序。
在使用 evhGetActiveTrigger (bvEvent) 确定哪个事件索引 (GPIO)触发事件处理程序代码的事件处理程序上、
但是索引限制为3。
如果 4个 GPIO 可以触发、如何确定触发哪个事件索引(GPIO)?
这很不可能。
您需要多快的时间来处理中断? 一种替代方法是轮询每个引脚。