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.

TMS320F280039C: CANA模块程序配置

Part Number: TMS320F280039C
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

根据官方的例程,对CANA模块进行配置,通过中断进行外部数据接收处理。

官方例程使用的是中断线0( INT_CANA0 ),我想更改为中断线1( INT_CANA1 )重新测试一下,结果发现无法触发中断,想求教一下程序配置哪里出错了?

我的中断程序:

void InitCAN_Interrupt() //<> CAN 中断初始化配置
{
CAN_enableInterrupt(CANA_BASE, CAN_INT_IE0 | CAN_INT_ERROR | CAN_INT_STATUS);
Interrupt_register(INT_CANA0, &canaRX_isr);
Interrupt_enable(INT_CANA0);
CAN_enableGlobalInterrupt(CANA_BASE, CAN_GLOBAL_INT_CANINT0);
}

将中断线0更改为1无法正常运行。

  • 你好,您这边使能了中断线1吗?

  • 你好,不清楚你所说的中断线使能指的是哪个部分

    void InitCAN_Interrupt() //<> CAN 中断初始化配置
    {
    CAN_enableInterrupt(CANA_BASE, CAN_INT_IE1 | CAN_INT_ERROR | CAN_INT_STATUS);
    Interrupt_register(INT_CANA1, &canaRX_isr);
    Interrupt_enable(INT_CANA1);
    CAN_enableGlobalInterrupt(CANA_BASE, CAN_GLOBAL_INT_CANINT1);
    }

    这个是直接更改后的程序。

    CAN_enableInterrupt(uint32_t base, uint32_t intFlags)
    {
    //
    // Check the arguments.
    //
    ASSERT(CAN_isBaseValid(base));
    ASSERT((intFlags & ~(CAN_INT_ERROR | CAN_INT_STATUS | CAN_INT_IE0 |
    CAN_INT_IE1)) == 0U);

    //
    // Enable the specified interrupts.
    //
    HWREG_BP(base + CAN_O_CTL) |= intFlags;
    }

    这个函数使能了 CAN_CTL->bit17,即 CANINT1 已经开启。

  • 您这边有配置相关的中断服务函数吗?

    您参考的是哪个例程?在C2000ware中的路径是?

  • 我使用的是 can_ex2_loopback_interrupts

    路径:C:\ti\c2000\C2000Ware_5_01_00_00\driverlib\f28003x\examples\can

    该程序使用的是中断线0,中断配置部分在上面的回答中

    测试方法:在 for 循环中做删减,当前为

    for(;;)
    {

    {
    CAN_sendMessage(CANA_BASE, TX_MSG_OBJ_ID, MSG_DATA_LENGTH,
    txMsgData);
    }

    }

    通过can输出进行验证测试。例程是正常运行的,但是更改中断线后无输出

  • 我查看下相关资料后回复您。

  • 你好,这个例程中使用了sysconfig工具,请问您是在该工具中对程序进行更改的吗?

  • 我是自己新建的工程,复制了官方的例程< can_ex2_loopback_interrupts >进行的测试,在尝试修改中断线时发生的故障。

    没有使用sysconfig工具。

  • 我是自己新建的工程,复制了官方的例程< can_ex2_loopback_interrupts >进行的测试,

    对于使用了sysconfig工具的工程建议不要这样做。因为有些设置是在sysconfig中完成的。所以建议您不要复制,直接导入工程,然后再利用sysconfig工具进行修改。

x 出现错误。请重试或与管理员联系。