"Thread:SysConfig"中讨论的其他器件
SDK 版本:8.5.0.24
CCS 版本:12.2.0.00009
SysConfig 版本:1.15.0
我目前正在从事一个需要在八个独立的 GPIO 引脚上注册中断的项目。 我尝试修改了 SDK 示例 GPIO_input_interrupt_am243x-lp_r5fss0-0_nortos_ti-arm-clang 为了使用 GPIO 引脚 GPIO1_[0..6]以及引脚 GPIO1_8、我们HwiP_Object为每个引脚构造了一个单独的实例。 此HwiP_Params.args字段设置为向 ISR 提供相应的引脚编号、方法与示例中执行的方法完全相同。
但是、我发现每次调用 ISR 时、ARGS 都具有寄存了中断的最终引脚编号的值、这意味着如果引脚 GPIO1_0是要注册的最终引脚、则 ISR 将始终传递为0、 如果 GPIO1_8是最终引脚、则 ISR 将始终通过8。
浏览了 SDK 文档后、我认为这与中断路由器有关、并且如果我可以为每个引脚分配一个单独的中断路由器输出索引、那么就可以单独指定 ISR 参数和/或回调。 我设法修改了 SYSFW 资源管理映射-部分是通过试错的、因为 SDK 文档在这方面似乎并不完整。 遗憾的是、这尚未解决我的问题。
我感觉我有部分正确-中断路由器输出允许用户指定单独的中断参数、但仅限于存储体级别。 各个 GPIO 引脚将始终为其组注册的 ISR 参数提供。 这与以下事实是一致的tisci_msg_rm_irq_set_req.src_indexSciclient_rmIrqSet():传递到的结构的字段似乎只关心 GPIO 组索引、而不关心引脚编号、如示例代码所示:
// ti_drivers_config.c, line 92, auto-generated by SysConfig rmIrqReq.src_index = TISCI_BANK_SRC_IDX_BASE_GPIO1 + GPIO_GET_BANK_INDEX(54);
问题1:情况是这样吗? 如果不是、请纠正。
问题2:如果是这种情况、找出在 ISR 内部触发中断的引脚的最佳方法是什么? 通过GPIO_getBankIntrStatus()在 ISR 内部调用并检查哪些位为1、似乎可以根据组(至少在我的本例中、所有引脚都驻留在组0中)来实现这一点。 我不确定这种方法是否足够可靠。
非常感谢您的观看!
