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.

[参考译文] RTOS/TMS320C6657:从未调用 ISR (CIC0 ->Corepac)

Guru**** 2577385 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/630370/rtos-tms320c6657-isr-never-gets-invoked-cic0---corepac

器件型号:TMS320C6657

工具/软件:TI-RTOS

大家好

在 TMDSEVM6657L (出厂设置、引脚 GPIO-14和 GPIO-26之间的快捷方式除外)上、我尝试对程序(CCS7)进行编码、其中:

  1. 定时器在 GPIO-14上产生一个周期为1秒的方波脉冲序列
  2. GPIO-26配置为输入、它应该在引脚 GPIO-15上产生一个中断、并且它的 ISR 输出一个第二个方波脉冲

第一部分正常工作(计时器及其中断每半秒一次)。 第二个没有。 我包含了整个项目的 zip 文件(请参阅下文)。

e2e.ti.com/.../cic0_5F00_isr.zip

我的印象是、我在函数内做了一些错误:

void cic0_config_GPIO_IRQ (int int_vec、int host_int_num、int gpio_pin、void (* ISR)(UARg))
{
uint32_t hwi_status = hwi_disable();

CpIntc_disableAllHostIntts (cic0); //一次性禁用 CIC0
CpIntc_clearSysInt( cic0、input_event_num ); //清除现有事件标志并启用它。
CpIntc_mapSysIntToHostInt( cic0、input_event_num、host_int_num ); //将系统事件映射到主机中断
CpIntc_dispatchPlug( input_event_num、isr、input_event_num、true ); //为 INPUT_EVENT_num 注册 ISR。
int EventID = CpIntc_getEventId( host_int_num ); //将 CorePac
EventCombiner_dispatchPlug( EventID、CpIntc_dispatch、host_int_num、true )的主机中断转换为事件;//注册 CpIntc 调度
程序 Hwi_Params_init (&hwi_params); //初始化 Hwi 参数。
Hwi_params.EventID = EventID / 32; // EventCombiner 期望0 <= EventID <= 3。
Hwi_params.arg = hwi_params.EventID;
hwi_params.enableInt = true;
hwi_params.maskSeting = Hwi_MaskingOption_self;
Hwi_create (int_vec、&EventCombiner_Dispatch、 (hwi_params,&error_block );//将 EventCombiner 发送程序注册到 int_vec
CpIntc_enableHostInt( cic0,host_int_num ); //启用主机中断。
CpIntc_enableAllHostInts( cic0 ); //启用全局主机中断。
CpIntc_enableSysInt( cic0、input_event_num ); //现在设置完成。 启用系统事件。

Hwi_restore (hwi_status);
} 


有人发现问题了吗?

提前非常感谢!

此致、

Pablo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Pablo、

    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

    BR
    Tsvetolin Shulev
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好。

    我刚刚看到函数 Hwi_create (...) 返回错误。 函数 Error_getMsg (...) 返回字符串"error{id:0x0、args[0x0、0x0]}"、但我不知道它的含义。

    请帮我解决这个问题。 谢谢!

    此致、

    Pablo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我n`t 您正在向函数传递 NULL 函数指针或句柄、它看起来是什么样的。

    是否可以将以下内容添加到配置脚本并重试。 您可以更好地了解错误和所有其他异常报告。

    xdc.useModule("xdc.runtime.Text").isLoaded = true;
    
    var 异常=xdc.useModule('ti.sysbios.family.c64p.Exception');
    
    异常。enablePrint = true; 




  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Rahul

    您的建议帮助我找到了内存短缺问题、但中断仍然不起作用。

    之后、我在另一个线程 ()中找到了更多提示、但不幸的是、这些提示也不起作用(我无法将这些引脚用于 GPIO、甚至不能用于正常 I/O)。

    评估模块(TMDSEVM6657L)中是否真的无法使用多路复用 GPIO 引脚?

    我不需要计时器、UART、也不需要 SPI。 是否有办法断开其中一个、以便可以使用多路复用 GPIO?

    谢谢、此致、

    Pablo